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

Limitando a entrada a apenas 1, 2, 3 e impedindo outros números

O trecho abaixo foi recortado do código

total_de_tentativas = 0

while(total_de_tentativas == 0):
    print("Qual nível de dificuldade?")
    print("(1) Fácil (2) Médio (3) Difícil")
    nivel = int(input("Defina o nível: "))
    print("")

    if(nivel == 1):
        total_de_tentativas = 10
    elif(nivel == 2):
        total_de_tentativas = 7
    elif(nivel == 3):
        total_de_tentativas = 5
    else:
        print("O nível digitado não existe!!! \n")

Funcionou para mim. Enquanto o nível digitado não for 1, 2 ou 3, o programa fica me pedindo o nível novamente. Há uma solução similar mais direta que a acima?

1 resposta
solução!

Olá, Dalmar!

Compreendo sua dúvida e acredito que podemos simplificar um pouco mais o código. Uma forma de fazer isso é utilizando um dicionário para mapear os níveis para o número de tentativas correspondentes. Aqui está um exemplo de como você pode fazer isso:

tentativas_por_nivel = {1: 10, 2: 7, 3: 5}

while True:
    print("Qual nível de dificuldade?")
    print("(1) Fácil (2) Médio (3) Difícil")
    nivel = int(input("Defina o nível: "))
    print("")

    if nivel in tentativas_por_nivel:
        total_de_tentativas = tentativas_por_nivel[nivel]
        break
    else:
        print("O nível digitado não existe!!! \n")

Neste exemplo, primeiro criamos um dicionário tentativas_por_nivel que mapeia cada nível para o número correspondente de tentativas. Em seguida, verificamos se o nível inserido pelo usuário está no dicionário. Se estiver, pegamos o número correspondente de tentativas do dicionário e saímos do loop. Se não estiver, imprimimos uma mensagem de erro e o loop continua, pedindo ao usuário para inserir um novo nível.

Espero ter ajudado e bons estudos!