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

O que tem de errado no meu código?

Não estou conseguindo identificar o erro no meu código. Minhas condições ("if" e "else") não aparecerem e o número de tentativas permanece "1 de 3" ("1 of 3"). alguém poderia me esclarecer? Thank you in advance!

O código está em inglês

print("****************************")
print('Welcome to the guessing game')
print("****************************")

secret_number = 42
total_attempts = 3
round = 1


while(round <= total_attempts):
    print("attempt", round, "of", total_attempts)
    guess_str = input("Choose a number: ")
    print("You typed: ", guess_str)
    guess = int(guess_str)

right = guess == secret_number
higher = secret_number < guess
lower = secret_number > guess

if (right):
    print("You are right!")
else:
    if(higher):
        print("You're wrong! your number was higher than the secret number")
    elif(lower):
        print("You are wrong!your number is lower than the secret number")

    round = round + 1

print("Game over")
2 respostas

Olá Sofia, Bom dia Creio que no Else não é preciso fazer comparação com o "lower" porque existe 3 condições ( right, higher e lower) nas decisões você tratou duas então no último você pode fazer assim.

else:
    if(higher):
        print("You're wrong! your number was higher than the secret number")
    else:
        print("You are wrong!your number is lower than the secret number")
solução!

Olá Sofia.

Do jeito que está a indentação do código a logica do seu if está fora do while do jogo, dessa maneira o seu jogo roda no while e fica preso lá já que a variável round não é modificada.

A solução é apensas colocar os espaços para o seu if ficar dentro do while como abaixo:

while(round <= total_attempts):
    print("attempt", round, "of", total_attempts)
    guess_str = input("Choose a number: ")
    print("You typed: ", guess_str)
    guess = int(guess_str)

    right = guess == secret_number
    higher = secret_number < guess
    lower = secret_number > guess

    if right:
        print("You are right!")
    else:
        if(higher):
            print("You're wrong! your number was higher than the secret number")
        elif(lower):
            print("You are wrong!your number is lower than the secret number")

        round = round + 1

print("Game over")

Na linguagem Python a indentação ,que normalmente tem a finalidade apenas de melhorar a legibilidade do código , ganhou também a função de definir escopo, em outras palavras a indentação defina o final do seu while, if, função e tudo mais dentro da linguagem Python.

Espero ter ajudado, qualquer duvida não hesite em perguntar.

Bons estudos.