2
respostas

Alguém mais teve problemas com a contagem de pontos?

Bom dia, galera! Seguinte: meu código tá igual ao demonstrado nas aulas, com algumas poucas diferenças na personalização das mensagens. Segue o código:

import random

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

numero_secreto = random.randrange(1, 101)

total_de_tentativas = 0 pontos = 1000

print('Escolha a dificuldade do jogo:', numero_secreto) print('(1) Fácil (2) Médio (3) Difícil')

nivel = int(input("Eleja um nível"))

if(nivel == 1): total_de_tentativas = 20 elif(nivel == 2): total_de_tentativas = 10 else: total_de_tentativas = 5

for rodada in range(1, total_de_tentativas + 1): print('Tentativa {} de {}'. format(rodada, total_de_tentativas)) chute_str = input('Digite aqui um número entre 1 e 100: ') print('Você digitou: ', chute_str) chute = int(chute_str)

if(chute <1 or chute>100):
    print('O número digitado deve estar entre 1 e 100!')
    continue

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

if(acertou):
    print('Você acertou! Parabéns! E sua pontuação foi: {}'.format(pontos))
    break
else:
    if(maior):
        print('O número digitado foi maior do que o número secreto!')
    elif(menor):
        print('O número digitado foi menor do que o número secreto!')
        pontos_perdidos = abs(numero_secreto - chute) 
        pontos = pontos - pontos_perdidos

print('****') print('Fim do jogo') print('****')

Entretanto, quando chega na parte de contar os pontos, sempre dá um erro quando o valor do número secreto é baixo, como 5. Mesmo que eu erre e vá pra segunda tentativa, e acerte nesta, o valor retornado da pontuação é 1000. Por exemplo, se eu o número secreto é 5, e no primeiro chute, eu coloco 90, teoricamente, era pra ser retornado uma pontuação de 915 pontos, não? Isso aconteceu com mais alguém? Obrigado, gente!

2 respostas

Oi Juliano,

Uma coisa muito importante em Python é a identação, ela faz total diferença no código. as suas ultimas linhas estão dentro do elif por isso os pontos não estão sendo contabilizados corretamente.

Olá Juliano o correto seria assim:

else:
    if(maior):
        print('O número digitado foi maior do que o número secreto!')
    elif(menor):
    print('O número digitado foi menor do que o número secreto!')
    pontos_perdidos = abs(numero_secreto - chute) 
    pontos = pontos - pontos_perdidos

Observe que agora o pontos e pontos_perdigos agora fazem parte do else e não mais do elif.

no seu modo estava assim:

else:
    if(maior):
        print('O número digitado foi maior do que o número secreto!')
    elif(menor):
        print('O número digitado foi menor do que o número secreto!')
        pontos_perdidos = abs(numero_secreto - chute) 
        pontos = pontos - pontos_perdidos

ou seja, eles estavam contido no comando elif. Espero ter te ajudado.