Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como fazer um chute fora do range não contar como uma rodada

Eu ouvi o professor comentando, talvez eu tenha perdido, porém... como fazer para um possível chute invalido, fora do range 1-50, não contar como uma tentativa(rodada), ou seja, caso o jogador escreva um numero invalido e jogo retorna o aviso: "Você deve digitar um número entre 1 e 50" e segue na mesma rodada ao invés de pular para a próxima? alguém implementou isso? obrigado

meu código:

import random

def jogar():

    print("Bem vindo ao jogo de Adivinhação!")
    print("\nNumero entre 1-50")
    print("\n*********************************")

    print("Escolha um nível de dificuldade")
    print("\n (1) FÁCIL \n (2) MÉDIO \n (3) DIFICIL")

    nivel = int(input("\nDefina o nível: "))


    raw_numero_secreto = random.randrange(1, 51)
    numero_secreto = int(raw_numero_secreto)
    tentativas = 6
    pontos = 1000

    if nivel == 1:
        tentativas = 15
    elif nivel == 2:
        tentativas = 10
    elif nivel == 3:
        tentativas = 5


    for rodada in range(1, tentativas + 1):


        print("\nRodada n° {} de {}".format(rodada, tentativas))

        chute = input("\nDigite seu numero: ")

        print("\nVocê digitou:",chute)
        chute = int(chute)

        if chute < 1 or chute > 50:
            print("Você deve digitar um número entre 1 e 50")
            continue


        acertou = numero_secreto == chute
        maior = chute > numero_secreto
        menor = chute < numero_secreto


        if acertou:
            print("\nVocê acertou e fez {} pontos!".format(pontos))
            break
        else:
            if maior:
                print("\nVocê errou, seu chute foi maior que o número secreto!\n")
            elif menor:
                print("\nVocê errou, seu chute foi menor que o número secreto!\n")
            pontos_perdidos = abs(numero_secreto - chute)
            pontos = pontos - pontos_perdidos

        print("-----------------------------------------------------------")
        rodada = rodada + 1

    print("\nFim de jogo!")
    print("\n O número secreto era: {}".format(numero_secreto))
    print("\n Pontuação: {}".format(pontos))

if __name__ == "__main__":
    jogar()

1 resposta
solução!

Olá Arthur, uma possível solução é a seguinte:

for rodada in range(1, tentativas + 1):
        chute = 0
        while(chute not in range(1,51)):
            print("\nRodada n° {} de {}".format(rodada, tentativas))
            print("Você deve digitar um número entre 1 e 50")
            chute = int(input("\nDigite seu numero: "))

        print("\nVocê digitou:",chute)

Ela obriga o usuário a digitar um número entre 1 e 50 e não gasta suas tentativas