Percebi que só se mostrava o pontos atuais, depois que acertasse o chute. O problema é, e se nós não acertar? Aí decidi implementar o código para mostrar a pontuação atual, mesmo se errarmos todas as vezes e assim no final do jogo, mostra o valor dos pontos final. E também coloquei os cálculos de descontar pontos e atualizar o placar, em 2 variáveis e chamei elas nos if's.
Código completo implementado
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("Qual o nível de dificuldade?")
print("(1) Fácil (2) Médio (3) Difícil")
nivel = int(input("Define o nível: "))
if(nivel == 1):
total_de_tentativas = 20
elif(nivel == 2):
total_de_tentativas = 10
else:
total_de_tentativas = 5
print(numero_secreto)
# variável/em/série/n°inicial, /n°Final, /step, => intervalo entre os elementos
for rodada in range(1, total_de_tentativas + 1):
print("Tentativa {} de {}".format(rodada, total_de_tentativas))
#print(f"Tentativa {rodada} de {total_de_tentativas}") # f-strings ou formatted string literals => novo recurso a partir do python 3.6
chute_str = input("Digite o seu número: ")
print("Você digitou " , chute_str)
chute = int(chute_str)
if (chute < 1 or chute > 100):
print("Você deve digitar um número entre 1 e 100!")
continue
acertou = chute == numero_secreto
maior = chute > numero_secreto
menor = chute < numero_secreto
# desconta e atualiza os pontos atual
desconta_pontos = pontos_perdidos = abs(numero_secreto - chute) # Para dar sinal positivo sempre. Ex: se der menos, transforma em mais
atualiza_pontos = pontos = pontos - pontos_perdidos
if(acertou):
print("Parabéns! 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! Seu placar agora é de {} pontos!".format(pontos))
desconta_pontos
atualiza_pontos
elif(menor):
print("Você errou! O seu chute foi menor do que o número secreto! Seu placar agora é de {} pontos!".format(pontos))
desconta_pontos
atualiza_pontos
# rodada = rodada + 1
print("Fim do jogo")
# Abaixo:
# random() => função que gera números aleatórios (precisa ser importado --> import random) Obs: random é uma função que está em um módulo separado, por importar
# round() => função que arredonda o número. Exemplo: 18.895629671768187 para 19 (arredonda pelo mais aproximado)
# random.random() => gera números aleatórios de 0.0 a 1.0
# random.randrange(10) => de 0 a 10
# random.randrange(0, 101) => 0 a 100 inclusivo
# seed => é as entradas dadas a cada chamada da função random e cada seed é utilizado como entrada por padrão os milisegundos(hora). Ou seja, cada milisegundos representa uma entrada e por isso acaba gerando números aleatórios. Lembrando que se repetir a entrada, repete o mesmo número a cada chamada da função random ou a cada sorteio
# pseudo-random => o python recebe esse nome pelo motivo de saber gerar número aleatórios de verdade
##############################################
# Abaixo: funções random e round para fins didáticos
#import random
#numero_random = random.random() * 100
#print(numero_random)
#numero_round = round(numero_random)
#print(numero_round)
##############################################