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!