1
resposta

Limitar a seleção da dificuldade entre 1 e 3

O Nico acabou deixando o else para qualquer número diferente de 1 e 2, ou seja, qualquer outro número que digitasse selecionava o difícil.

Eu consegui resolver mas acho que ficou com uma carinha de gambiarra pois tentei aproveitar os valores da variável total_de_tentativas. Existe uma forma mais eficiente de arrumar?

import random


print("*********************************")
print("Bem vindo ao jogo de Adivinhação!")
print("*********************************")
numero_secreto = random.randrange(1, 101)
total_de_tentativas = 0



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

    nivel = int(input("Selecione sua dificuldade: "))

    if(nivel == 1):
        total_de_tentativas = 20
    elif(nivel == 2):
        total_de_tentativas = 10
    elif(nivel == 3):
        total_de_tentativas = 5
    else:
        total_de_tentativas = 0
        print("Digite um número válido")



for rodada in range(1,total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))

    chute_str = input("Digite um número entre 1 e 100: ")
    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

    if(acertou):
        print("Parabéns! Você acertou!")
        break
    else:
        if(maior):
            print("O seu chute foi maior do que o número secreto!")
        elif(menor):
            print("O seu chute foi menor do que o número secreto!")


print("Fim do jogo")
print("O numero secreto era {}".format(numero_secreto))
1 resposta

Olá,

Você pode fazer um pequeno loop para que verifique se está colocando o valor correto de 1 a 3, com um simples while e utilizando praticamente os mesmos ifs que usou.

Ficaria mais ou menos assim:

# --------- Inicio do código ---------

while True:

    #Aqui não irei converter o nivel para inteiro, para já fazer um tratamento caso insira uma letra ou algo parecido
    nivel = input("Selecione sua dificuldade: ")  

    if nivel == '1':
        total_de_tentativas = 20
        break   # O break vai encerrar o loop quando inserir um valor que está válido
    elif nivel == '2':
        total_de_tentativas = 10
        break
    elif nivel == '3':
        total_de_tentativas = 5
        break
    else:
        # retirei a parte do "total_de_tentativas = 0", pois o loop irá rodar até que insira um valor válido
        print("Digite um número válido")

# --------- Resto do código ---------

Espero ter ajudado. Bons estudos : )