3
respostas

Name 'chute_str' can be undefined

Olá, comecei o python agora e possuo uma dúvida, oque a warning "Name 'chute_str' can be undefined" significa? ela apareceu pra mim no seguinte código:

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

numero_secreto = 42
max_chances = 5

while max_chances > 0:
    chute_str = input("digite o seu número: ")
print("você digitou", chute_str)
chute = int(chute_str)

acertou = numero_secreto == chute
maior = chute > numero_secreto
menor = chute < numero_secreto

if acertou:
    print("você acertou!")
else:
    if maior:
        print("você errou, o seu chute foi maior que o número secreto")
    else:
        print("você errou, o seu chute foi menor que o número secreto")

        max_chances = max_chances - 1

print("fim de jogo!")
3 respostas

Olá Luigi!

Não conheço essa warning mas vou pela lógica.

"Name 'chute_str' can be undefined" traduzindo significa que a variável 'chute_str' pode ser indefinida. Ou seja, pode ser que essa variável não seja declarada e isso quebre o seu código.

Analisando o seu código, vemos que isso faz sentido. Por que digamos que a variável max_chances receba o valor 0. Dessa forma, o while não irá ser executado, e portanto a variável chute_str jamais irá ser criada. Isso ocasionará um erro no seu código. Tente fazer isso de forma proposital para entender. Coloque o max_chances como 0.

Tente colocar chute = int(chute_str) dentro do while

Olá Luiggi, segue uma sugestão de código, pois, da maneira que você fez o loop não para.

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

numero_secreto = 42
max_chances = 0

while max_chances <= 5:
    max_chances = max_chances + 1

    chute_str = input("digite o seu número: ")
    print("você digitou", chute_str)
    chute = int(chute_str)

    acertou = numero_secreto == chute
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    if acertou:
        print("você acertou!")

        break
        print("fim de jogo!")
    else:
        if maior:
            print("você errou, o seu chute foi maior que o número secreto")
        else:
            print("você errou, o seu chute foi menor que o número secreto")

print("fim de jogo!")

Você colocou max_chances = 5, no while você colocou max_chances < 0 e o restante do código fora do bloco while.