1
resposta

Dúvida possível erro ao indentar código

Boa noite. Espero que estejam bem. Pode ser uma dúvida besta, mas... Depois do exercício abaixo onde tínhamos que colocar o código if (rodada == total_de_tentativas): a parte final do código ficou assim:

if(acertou):
    print("Você acertou e fez {} pontos!".format(pontos))
    break
else:
    if(maior):
        print("Você errou! O seu chute foi maior do que o número secreto.")
        if (rodada == total_de_tentativas):
            print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))
    elif(menor):
        print("Você errou! O seu chute foi menor do que o número secreto.")
            if (rodada == total_de_tentativas):
            print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))
    pontos_perdidos = abs(numero_secreto - chute)
    pontos = pontos - pontos_perdidos

porém nas duas últimas linhas, conforme abaixo, se elas não estão exatamente embaixo do elif(menor): , o sistema não está descontando os pontos. pontos_perdidos = abs(numero_secreto - chute) pontos = pontos - pontos_perdidos

Porque isso ocorre? Espero que tenha ficado claro e desculpe se for simples demais a dúvida.

1 resposta

Acredito que isso ocorre por questão da indentação necessária para que no laço em específico que você mencionou, a cada rodada, seja verificado o desconto a se fazer de acordo com os dados passado.

Por exemplo:

while(rodada <= tentativas):
    print("Tentativa {} de {}".format(rodada, tentativas))
    palpite = input("Digite o seu palpite numérico: ")
    print("Você digitou o número: ", palpite)
    palpite_correto = int(palpite)

    acertou       = palpite_correto == numero_secreto
    palpite_maior = palpite_correto > numero_secreto
    palpite_menor = palpite_correto < numero_secreto

    if (acertou):
        print("Parabens! Você achou o número correto e tambem a resposta do universo! :)")
    else:
        if(palpite_maior):
            print("Que pena, você errou! Seu palpite foi maior que o número a ser adivinhado. Tenta novamente!")
        elif(palpite_menor):
            print("Que pena, você errou! Seu palpite foi menor que o número a ser adivinhado. Tenta novamente!")

    rodada = rodada + 1

Nesse laço de while que estou mostrando, foi definido previamente em uma variável que a rodada inicial seria a número 1 e no final do laço, a cada tentativa (com um limite estabelecido também em uma variável), seria adicionado +1 rodada, até que o número seja <= (menor que ou igual) ao número de tentativas.

Os testes com o if(acertou) farão todas as verificações até que o laço while seja completo com a condição acima estabelecida, sendo assim necessário que a medicação do número de rodadas esteja dentro do bloco de código.

Espero ter esclarecido um pouco sua dúvida sobre a necessidade de estar tudo dentro do bloco.

Abraço e bons estudos.