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

[Dúvida] Python - Validação de um número

Boa tarde!

Estou dando meus primeiros passos em programação e também na plataforma Alura. Estou criando meu primeiro jogo do número secreto em Python.

Criei uma função para realizar a validação se o número digitado pelo usuário é menor que zero ou maior que 10. Porém, no laço que realiza a validação, mesmo após digitar um número entre 0 e 10, o laço ainda pede para o usuário informar mais uma única vez um número.

Abaixo o código utilizado. Subi em um gist do GitHub para eu ir me familiarizando com outras ferramentas. https://gist.github.com/miyashirocesar/ab78f570ada41eb4f7189627022617ea

import random


def validacao(numero_chute):
    while numero_chute < 0 or numero_chute > 10:
        numero_chute = int(input("Número inválido, informe outro número: "))
    else:
        return numero_chute


print("Bem vindo ao jogo do número secreto")
numero_secreto = random.randint(0, 11)
chute = int(input("informe um número de 0 a 10: "))
validacao(chute)
chute = validacao(chute)
tentativas = 1
while chute != numero_secreto:
    if chute < numero_secreto:
        chute = int(input("O numero secreto é maior, informe outro número: "))
    else:
        chute = int(input("O numero secreto é menor, informe outro número: "))
    tentativas = tentativas+1


print("Parabéns, o número secreto é ", str(numero_secreto) + " em ", tentativas)
2 respostas
solução!

Olá César, tudo bem?

O código que você escreveu parece está quase lá. Há um pequeno problema em como você está chamando a função validacao(). Segue uma sugestão:

import random

def validacao(numero_chute):
    while numero_chute < 0 or numero_chute > 10:
        numero_chute = int(input("Número inválido, informe outro número: "))
    return numero_chute

print("Bem vindo ao jogo do número secreto")
numero_secreto = random.randint(0, 10)  # Ajustado para gerar números entre 0 e 10 inclusive
chute = int(input("Informe um número de 0 a 10: "))
chute = validacao(chute)  # Chamando a função de validação aqui
tentativas = 1

while chute != numero_secreto:
    if chute < numero_secreto:
        chute = int(input("O número secreto é maior, informe outro número: "))
    else:
        chute = int(input("O número secreto é menor, informe outro número: "))
    chute = validacao(chute)  # Chamando a função de validação aqui também
    tentativas += 1

print("Parabéns, o número secreto é", str(numero_secreto) + ", encontrado em", tentativas, "tentativas.")

A principal mudança foi mover a chamada da função validacao() para antes do loop while e também dentro do loop, para garantir que o número seja validado adequadamente. Tbm ajustei a chamada para random.randint(0, 10) para garantir que o número secreto seja gerado entre 0 e 10, incluindo o 0 e tbem o 10.

Espero ter ajudado, avise se deu tudo certo o/

Muito bom!

Não havia me atentado em realizar a validação no loop while também. Muitíssimo obrigado pelo apoio!