Pra evitar repetir o código do if de erro nas cláusulas Menor e Maior,
if (rodada == total_de_tentativas):
print("Fim de jogo. O número secreto era {} e você fez {} pontos".format(numero_secreto, pontos))
eu inseri fora da cláusula. Nos meus testes, tudo ocorreu bem. acho que está certo também, né? Ficou da seguinte forma:
import random
print("-----------------------------------", "Bem vindo(a) ao jogo de adivinhação", "-----------------------------------", sep="\n") # Apresentação do jogo
numero_secreto = random.randint(1, 100)
total_de_tentativas = 0
pontos = 1000
print("Escolha o nível de dificuldade")
print("1- Fácil | 2- Médio | 3- Difícil")
nivel = int(input("Digite o nível conrrepondente: "))
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("Rodada {} de {}".format(rodada, total_de_tentativas))
chute_str = input("Digite o seu número: ")
chute = int(chute_str)
acertou = chute==numero_secreto
maior = chute>numero_secreto
menor = chute<numero_secreto
if (chute<1 or chute>100):
print("Você deve digitar um valor entre 0 e 100. Você perdeu uma rodada.")
continue
else:
print("Você chutou: " + chute_str)
if (acertou):
print("Você acertou! :D | Voce obteve {} pontos".format(pontos))
break
else:
if (maior):
print("Você errou. Você chutou um número MAIOR. :(")
elif (menor):
print("Você errou. Você chutou um número MENOR. :(")
pontos_perdidos = abs(chute-numero_secreto)
pontos = pontos - pontos_perdidos
if (rodada == total_de_tentativas):
print("Fim de jogo. O número secreto era {} e você fez {} pontos".format(numero_secreto, pontos))