Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida para corrigir a entrada de um valor diferente de um inteiro ou tecla ENTER

Pessoal, Uma duvida. Percebi que durante a execução do código, onde o usuário deveria informar o seu chute, caso a tecla enter fosse inserida ou qualquer outro valor diferente de um inteiro, o programa encerrava a execução e retornava o erro:"ValueError: invalid literal for int() with base 10: ''

Fiz algumas pesquisas e consegui resolver com um laço de While/Try, porem não estou conseguindo aplicar a mesma técnica quando o usuário precisa escolher o nível de dificuldade.

Corrigi o problema que qualquer número acima de 3, puxava o nível difícil, mas ainda ocorre o erro ao entrar com a tecla enter ou digitar outro dado que não seja um inteiro. Como consigo resolver?

peço desculpas caso tenha errado em postar o código,

Segue o código completo:

import random


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

#variavéis
numero_secreto = random.randrange(1,101) #Gerando o número aleatorio
total_de_tentativas = 0


#definindo nível de dificuldade
print("Qual nível de dificuldade?")
print("(1) Fácil (2) Médio (3) Difícil")
nivel = int(input("Define o nível: "))


#Lógica para cada nível
if(nivel == 1):
    total_de_tentativas = 20
elif(nivel == 2):
    total_de_tentativas = 10
elif(nivel == 3):
    total_de_tentativas = 5

else:
    print('Opção não existe! Escolha um nível para iniciar o jogo.')

#iniciando laço de repetição
for rodada in range (1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))

#Entrada de dados 
    while True:
        try:
            chute = int(input("Digite um número entre 1 e 100: "))
            print("Você digitou", chute)

            break
        except ValueError as err:
            print("Opção invalida, digite apenas numerais entre 1 e 100 ")


#Validando os dados inseridos
    if (chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100")
        continue #continuar o laço

#Condições
 acertou = chute == numero_secreto #Primeira condição
 chute_maior = chute > numero_secreto #Segunda condição
 chute_menor = chute < numero_secreto #Terceira condição

#Iniciando a lógica
    if(acertou):
        print("**********************************")
        print("Você acertou")
        print("**********************************")
        break #Encerrando o laço
    else:
        if(chute_maior):
            print("Você errou! O seu chute foi maior do que o número secreto")
        elif(chute_menor):
            print("Você errou! O seu chute foi menor do que o número secreto")



print("********************************")
print("Fim do jogo")
print("********************************")

2 respostas
solução!

Oi Raul, vc pode fazer a mesma coisa

#definindo nível de dificuldade
    while True:
        try:
            print("Qual nível de dificuldade?")
            print("(1) Fácil (2) Médio (3) Difícil")
            nivel = int(input("Define o nível: "))
            if nivel < 1 or nivel > 3:
                raise #gera um erro se o 'nível' for menor 1 ou maior que 3
            break
        except:
            print("Opção invalida, digite apenas numerais entre 1 e 3 ")

Obrigado Luis!!!!