Olá pessoal, Espero que estejam todos bem!
Tenho uma dúvida meio "besta". Quando da implementação dos pontos perdidos, sempre que erramos até a ultima tentativa, são descontados dos pontos apenas a soma dos pontos_perdidos até a penultima tentativa. Acredito que é devido aos blocos de if estarem antes do cálculo.
Aqui o resultado do teste em que erro todas as tentativas com o código da aula:
********************************
Bem vindo ao jogo de advinhação!
********************************
Qual o nível de dificuldade?
(1) Fácil (2) Médio (3) Difícil
Defina o nível: 3
Tentativa 1 de 5
Digite um numero entre 1 e 100: 99
Você digitou 99
Você errou! O seu chute foi maior do que o numero secreto
Tentativa 2 de 5
Digite um numero entre 1 e 100: 90
Você digitou 90
Você errou! O seu chute foi maior do que o numero secreto
Tentativa 3 de 5
Digite um numero entre 1 e 100: 80
Você digitou 80
Você errou! O seu chute foi maior do que o numero secreto
Tentativa 4 de 5
Digite um numero entre 1 e 100: 70
Você digitou 70
Você errou! O seu chute foi maior do que o numero secreto
Tentativa 5 de 5
Digite um numero entre 1 e 100: 65
Você digitou 65
Você errou! O seu chute foi maior do que o numero secreto
O número secreto era 20. Você fez 741 pontos.
Fim do jogo!
Process finished with exit code 0
A soma dos pontos perdidos dá 259, desconsiderando a ultima rodada deixando de somar 45 pontos perdidos. Incluindo a ultima rodada o resultado seria 696 pontos. Modifiquei o cálculo, incluindo-o logo após a declaração do else, ficando o código da seguinte forma:
import random
print("********************************")
print("Bem vindo ao jogo de advinhação!")
print("********************************")
numero_secreto = random.randrange(1,101)
total_de_tentativas = 0
pontos = 1000
print("Qual o 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(f"Tentativa {rodada} de {total_de_tentativas}")
chute = int(input("Digite um numero entre 1 e 100: "))
print("Você digitou ", chute)
if(chute < 1 or chute > 100):
print("Você deve digitar um numero entre 1 e 100!")
continue
acertou = chute == numero_secreto
maior = chute > numero_secreto
menor = chute < numero_secreto
if (acertou):
print(f"Você acertou e fez {pontos} pontos.")
break
else:
pontos_perdidos = abs(numero_secreto - chute)
pontos = pontos - pontos_perdidos
if(maior):
print("Você errou!", "O seu chute foi maior do que o numero secreto")
if(rodada == total_de_tentativas):
print(f"O número secreto era {numero_secreto}. Você fez {pontos} pontos.")
elif(menor):
print("Você errou!", "O seu chute foi menor do que o numero secreto")
if (rodada == total_de_tentativas):
print(f"O número secreto era {numero_secreto}. Você fez {pontos} pontos.")
print("Fim do jogo!")
Estou usando o .format diferente, incluo o f antes das " " no print e coloco as variaveis dentro das chaves. Pode ser feito assim? Ou é má prática?
Desde já agradeço! Um bom ano novo a todos!!! :)