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

Erro ao não utilizar um número

Olá, tudo bem?

Até o momento o código feito consegue detectar se o usuário deu um chute menor do que 1 ou maior do que 100 e assim fornece uma mensagem para o usuário a respeito do intervalo sugerido. Contudo, caso o usuário digite uma string, o Python será incapaz de transformá-la em um número inteiro e por isso apresentará um erro.

O que podemos fazer em relação a isso? Ou seja, como podemos melhorar o código para que ele possa também detectar se o usuário digitou uma string, apresentar uma mensagem de erro e o programa seguir para a próxima tentativa?

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

numero_secreto = 42
total_de_tentativas = 3

for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Digite um 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("Você acertou!")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior do que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor do que o número secreto.")

print("Fim do jogo")

Desde já obrigado!

1 resposta
solução!

Oi Thiago, tudo bem?

Uma maneira de fazer essa verificação é utilizar o método das strings isdigit. Esse método devolve um booleano falando se o valor na string é um número ou não.

Você pode fazer essa verificação antes de converter o valor para int:

# código omitido
for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Digite um número entre 1 e 100: ")
    print("Você digitou " , chute_str)

    if not chute_str.isdigit():
        print('Você precisa digitar um número...')
        continue

    chute = int(chute_str)