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

Não é calculado a última rodada

Olá,

Segue meu código, mesmo um pouco diferente do demostrado na aula esta validada com os testes realizados pelo professor. Mesmo deixando identico ao da aula o erro permanece.

Erro: ao realizar a última rodada o programa não subtrai a pontuação dos pontos.

import random

print('*'*20)
print('Jogo da adivinhação')
print('-'*20)

n = random.randint(1, 10)  # valor aleatório a ser acertado
print('opções:\n 1 - 5 tentativas \n 2 - 3 tentativas \n 3 - 1 tentativa \n')
nivel = int(input('Escolha seu nível de jogo: '))

tentativa = 0
if nivel == 1:
    tentativa = tentativa + 5
elif nivel == 2:
    tentativa = tentativa + 3
elif nivel == 3:
    tentativa = tentativa + 1

pontos = 10

for rodada in range(1, tentativa + 1):
    print(n)
    msg_pontos = f'Sua pontuação atual é {pontos}.'
    print(f'Tentativa {rodada} de {tentativa}.')
    chute = int(input('Escolha um número entre 1 e 10: '))
    acerto = chute == n
    erro_b = round((n-chute)/n, 2)*100
    erro_a = round((chute-n)/n, 2)*100

    if chute < 1 or chute > 10:
        print('Valor escolhido fora das opções, por favor, escolha outro valor.')
        continue

    if acerto:
        print('Você acertou!!!', msg_pontos)
        break

    elif chute < n:
        print(f'Você errou {erro_b :.2f}% abaixo.\n')

    elif chute > n:
        print(f'Você errou {erro_a :.2f}% acima.\n')
    pontos = pontos - abs(n-chute)

    print(msg_pontos)

print('Fim de Jogo!!!')
3 respostas

Pessoal,

Achei a resposta... rsrrsrsrs

O problema está na varíavel 'msg_pontos' dentro do FOR, pois ela traz o valor da varíval pontos no momento anterior a rodada atual.

Ao retirar ela e inserir apenas 'print(pontos)' o código passou a funcionar corretamente.

Obrigado.

solução!

Python é uma linguagem que requer que a indentação seja bem feita, no caso do "print(msg_pontos)" você pode seleciona-lo e dependendo do editor que esteja usando, Shift+Tab recua a linha.

Isso mesmo Germano, o segredo foi a indentação da mensagem.