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

Somente uma dica...

É importante aprender a conversão de string para inteiro, mas acho que seria mais simples se definíssemos o número secreto como string no início pois se alguém digita um texto não dá esse erro :

Traceback (most recent call last): File "C:/Users/Rachel/PycharmProjects/pythonProject/jogos/adivinhacao.py", line 4, in <module> chute = int(chute) ValueError: invalid literal for int() with base 10: 'f' `

1 resposta
solução!

Oii Evandro, como você está?

Sua observação é muito pertinente. E algo que poderíamos fazer para esse caso, é verificar se a pessoa realmente digitou um número inteiro, e caso ela digite letras ou até mesmo um número com ponto flutuante, pedimos a ela para digitar um valor válido, ou seja um inteiro.

Para fazermos isso, é importante sabermos sobre a função isdigit(), ela retorna True se o valor passado como parâmetro for um inteiro e False caso seja um valor diferente de um inteiro. Veja abaixo um exemplo de código:

while True:
    chute = input("Digite um valor: ")

    print(chute.isdigit())

Resultado:

Digite um valor: 12
True
Digite um valor: 45.3
False
Digite um valor: f
False
Digite um valor: 6
True

Observe que quando digitamos um valor de ponto flutuante (45.3) ou alguma letra(f), a função isdigit nos retornou False, mostrando assim que aquele caracter não era um número inteiro.

Para aplicar essa lógica no jogo, podemos pensar da seguinte maneira: enquanto o usuário não digitar um valor válido, pedimos a ele para digitar novamente até que um valor válido seja digitado. Quando o usuário digitar um valor válido, sairemos do laço de repetição e fazemos a conversão do valor para inteiro. Veja como fica em código:

def pede_chute():
    chute = input("Digite um valor: ")
    while chute.isdigit() == False:
        chute = input("Digite um valor válido: ")

    chute = int(chute)
    return chute

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!