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

Calculo de pontos sempre da 1000

Boa noite,

Estou tentando aplicar no jogo o cálculo de perda de pontos, mas no final sempre está dando 1.000. Vi que existem 2 topicos abertos sobre isso, mas em nenhum daqueles casos se aplica.

Abaixo o codigo:

import random

print("********************")
print("Seja bem vindo ao jogo da Advinhação!")
print("********************")

numero_secreto = random.randrange(1,101)
total_de_tentativas = 0
pontos = 1000
print(numero_secreto)

print("Qual é o seu nível de dificuldade")
print("(1) Fácil (2) Médio (3) Difícil")

nivel = int(input("Defina o 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 o seu número secreto: ")
    print("Você digitou ", chute_str)
    chute = int(chute_str)

    if(chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 a 100")
        continue

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

    if (acertou):
        print("Você acertou! e fez {} pontos!".format(pontos))
        print("Fim do jogo!")
        break
    else:
        if(maior):
            print("Você digitou um numero maior que o número secreto")
            continue
        elif(menor):
            print("Você digitou um numero menor que o número secreto")
            continue
        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos

rodada = rodada +1
print("Fim do jogo!")
2 respostas
solução!

Oii Caio, tudo bem?

No Python, a instrução continue é utilizada dentro de estruturas de repetição, como loops (for e while) ou condicionais (if-else), para pular a execução das próximas linhas de código e ir diretamente para a próxima iteração do loop. Em outras palavras, quando o continue é encontrado, o programa ignora o restante do código dentro do loop para aquela iteração específica e passa para a próxima iteração. Quando o continue é acionado, a execução do loop é interrompida imediatamente e o controle retorna à linha onde o loop foi iniciado. A partir desse ponto, as próximas iterações continuam normalmente, sem executar o código que vem após o continue.

Nesse código fornecido, o continue é utilizado no seu condicional if-else de verificação se o valor está correto, maior ou menor que o número secreto. Quando o jogador digita um número maior ou menor do que o número secreto, a mensagem correspondente é exibida, mas a instrução continue será acionada para pular o restante do código dentro do loop e passar para a próxima iteração, solicitando ao jogador que faça outra tentativa. Por esse motivo, o cálculo de pontos_perdidos e pontos nunca é realizado, e a variável pontos se mantém com seu valor original de 1000, que foi declarado anteriormente.

Para corrigir isso, podemos retirar os continue de seu condicional de verificação, de modo que seu código fique dessa forma:

#Código Anterior Aqui

    if (acertou):
        print("Você acertou! e fez {} pontos!".format(pontos))
        print("Fim do jogo!")
        break
    else:
        if(maior):
            print("Você digitou um numero maior que o número secreto")
        elif(menor):
            print("Você digitou um numero menor que o número secreto")
        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos

#Resto do Código Aqui

Desse modo, as variáveis de pontuações vão ser lidas e atualizadas e no final da execução de seu código, o valor correto aparecerá :)

Importante também lembrar de retirar de seu código a linha de incremento rodada = rodada + 1 visto que era está fora de seu loop for e não está dentro do escopo do seu projeto!

Espero ter ajudado e em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Oi Laís,

Agora deu certinho aqui e consegui entender. Muuuito obrigado pela explicação!

Grande abraço!