Olá Eduardo, tudo bem com você?
Podemos testar a entrada do usuário salva na variável chute_str
utilizando a cláusula if
com o operador .isnumeric(), esse operador irá testar se os dados contidos na string são numéricos, em caso afirmativo ela retorna o valor booleano True
. Caso o usuário tenha informado letras ou outros caracteres não numéricos, será retornado False
. O uso do operador .isnumeric()
ficará da seguinte forma.
chute_str.isnumeric()
Onde retornará:
True
: Quando o usuário informa apenas números.False
: Quando o usuário informa outros caracteres.
Sabemos que a estrutura condicional if
é executada apena quando a expressão declarada é verdadeira (True
), mas, como apresentado acima, queremos que ela seja executada quando o usuário informa outros caracteres, ou seja, quando o retorno da expressão chute_str.isnumeric()
é False
.
Para que nossa lógica funcione vamos fazer o uso da cláusula not
, essa cláusula tem a função de negar o que foi declarado após ela invertendo o seu valor booleano, o que é False
vira True
e o que é True
vira False
. Assim, quando um usuário fornecer um caracteres não numéricos o resultado do operador .isnumeric()
retornará o valor False
i e a cláusula not
negará o resultado transformando para True
. Implementando no código temos.
if (not chute_str.isnumeric()):
Agora basta declararmos a estrutura do código presente no laço if
e usarmos a cláusula continue
para que o laço for
passe para uma nova tentativa. Como abaixo.
if not chute_str.isnumeric():
print('Informe apenas números!')
continue
Caso o usuário informe apenas caracteres numéricos, a estrutura condicional if
não será executada, passando para a conversão da entrada para o tipo int
e demais validações.
Caso queria testar o código, basta copiar a validação if
acima e adiciona-la antes da conversação para o tipo int
e dentro do laço for
, verifique também o nome da variável chute_str
, caso seja necessário, substituta deixando conforme seu projeto. Salve o arquivo apos a mudança e execute-o.
Aplicando a validação no código da aula temos o seguinte resultado.
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)
if (not chute_str.isnumeric()):
print('Informe apenas números!')
continue
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")
Lembre-se que pode contar com o fórum sempre, seja para tirar suas dúvidas, compartilhar dicas ou o seu desenvolvimento junto a Alura.
Espero ter lhe ajudado, fico à disposição em caso de dúvidas.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!