Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O código funciona, mas queria tirar uma dúvida.

Fiz esse código aqui:

import random

print("******************************")
print("***********Bem vindo**********")
print("******************************")
def jogar():
    numero_secreto = round(random.randint(1,51))
    total_de_tentativas = 0
    rodada = 1
    total_de_pontos = 500
    print(numero_secreto)


    print("Fácil(1) Médio(2) Díficil(3)")
    nivel = int(input("Defina a dificuldade:"))

    if nivel == 1:
        print("Fácil")
        total_de_tentativas = 20
    elif nivel == 2:
        print("Médio")
        total_de_tentativas = 15
    elif nivel == 3:
        print("Díficil")
        total_de_tentativas = 10
    else:
        print("Nível de dificuldade inválido.")
        jogar()

    for rodada in range (1, total_de_tentativas + 1):
        print("Rodada {} de {}".format(rodada, total_de_tentativas))
        chute = int(input("Qual é o número secreto?"))
        if chute == numero_secreto:
            print("Você acertou ! O número secreto é {}".format(numero_secreto))
            print("Você fez {} pontos.".format(total_de_pontos))
            break
        elif chute < numero_secreto:
            print("Você errou. O número secreto é maior.")
        elif chute > numero_secreto:
            print("Você errou. O número secreto é menor.")
        total_de_pontos = total_de_pontos - abs((chute - numero_secreto))
        print("Seu total de pontos é {}! Você perdeu {} pontos!".format(total_de_pontos, abs(chute - numero_secreto)))
        continue

if (__name__ == "__main__"):
    jogar()

Minha dúvida é: Eu consigo fazer o jogo recomeçar caso a pessoa coloque a dificuldade errada, sem precisar fazer usar a def jogar() ?

    if nivel == 1:
        print("Fácil")
        total_de_tentativas = 20
    elif nivel == 2:
        print("Médio")
        total_de_tentativas = 15
    elif nivel == 3:
        print("Díficil")
        total_de_tentativas = 10
    else:
        print("Nível de dificuldade inválido.")
        jogar()

Me perdi um pouco nessa parte.

1 resposta
solução!

Olá,

Você pode criar um loop simples usando while, pra que ele fique rodando ali até que uma opção válida seja inserida, vou dar um código de exemplo:

total_de_tentativas = 0

while 1:  # O 1 funciona como se fosse o 'True'

    print("Fácil(1) Médio(2) Díficil(3)")

    # Eu tratei como se o nivel fosse uma string sem converter para 'int', pois poderia acontecer um erro de conversão caso colocasse uma letra
    nivel = input('Escolha a dificuldade: ')  

    # Utilizando os mesmos ifs que você usou, mais a diferença seria acrescentar o break para caso digite um número certo, o loop se encerre e continue o programa
    if nivel == '1':
      print("Fácil")
      total_de_tentativas = 20
      break
    elif nivel == '2':
      print("Médio")
      total_de_tentativas = 15
      break
    elif nivel == '3':
      print("Díficil")
      total_de_tentativas = 10
      break
    else:
      print("Nível de dificuldade inválido.")
      print("Insira um valor válido.")

Espero ter ajudado em algo. Bons estudos : )