1
resposta

Erro ao responder uma letra no lugar do numero

Como resolvo o problema do jogo dar erro se caso eu colocar "a" no lugar de um numero de "1 a 100"?

import random

print("******************************************")
print("Bem vindo ao jogo de Adivinhação!")
print("******************************************")

numero_secreto = random.randrange(1,101)
total_de_tentativas = 0

print("Qual nível de dificuldade?")
print("(1) Fácil (2) Médio (3) Difícil")

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

if(nivel == 1):
    total_de_tentativas = 20
elif(nivel == 2):
    total_de_tentativas = 10
else:
    total_de_tentativas = 5

for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Digite número entre 1 e 100: ")
    print("Você Digitou ", chute_str)
    chute = int(chute_str)

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

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

    if(acertou):
        print("Parabéns! Você acertou!")
        break
    else:
        if(chute > numero_secreto):
            print("Você errou! O seu chute foi MAIOR! do que o número secreto.")
        if(chute < numero_secreto):
            print("Você errou! O seu chute foi MENOR! do que o número secreto.")

print("Fim do Jogo!")
1 resposta

Olá, Andre Luis. Tudo bom?

Existem diversas formas de você checar o valor informado pelo usuário e evitar bugs. Uma forma é utilizando o try / except (que é utilizado para tratamento de erros). Caso a entrada do usuário não permita que o Python continue executando o código, ele vai parar de tentar e vai pular direto para o except, enviando uma mensagem de erro ao usuário e deixando que o código continue rodando. Neste caso o jogador perde uma rodada.

Utilizando o try / except

for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Digite número entre 1 e 100: ")
    print("Você Digitou ", chute_str)
    try:
        chute = int(chute_str)

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

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

        if(acertou):
            print("Parabéns! Você acertou!")
            break
        else:
            if(chute > numero_secreto):
                print("Você errou! O seu chute foi MAIOR! do que o número secreto.")
            if(chute < numero_secreto):
                print("Você errou! O seu chute foi MENOR! do que o número secreto.")
    except:
        print(f'{chute_str} não é um valor válido. Tente novamente')

Espero ter ajudado : )