Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Testar o valor de input para o nível do jogo

Olá pessoal, espero que todos estejam bem. Por favor, como eu posso validar se a entrada para a variável "nível" está entre 1 e 3, e caso não esteja, emitir um aviso para o usuário, e somente prosseguir quando o valor correto for inserido?

Atualmente, no código como está, qualquer valor fora do range esperado irá designar "nível = 3"

Obrigado!

import random

print("\n*********************************")
print("Bem vindo ao jogo de adivinhação!")
print("*********************************")

numero_secreto = random.randrange(1, 101)
total_tentativas = 0
pontos = 1000

print("\nEscolha um nível de dificuldade:")
print("(1) Fácil (2) Médio (3) Difícil")
nivel = int(input("Sua escolha: "))

if(nivel == 1):
    total_tentativas = 20
elif(nivel == 2):
    total_tentativas = 10
else:
    total_tentativas = 5

for rodada_atual in range(1, total_tentativas + 1):
    print("\n*********************************")
    print("Tentativa {} de {}".format(rodada_atual, total_tentativas))
    palpite = int(input("Escolha um número entre 1 e 100: "))

    if(palpite < 1 or palpite > 100):
        print("\nNúmero inválido! Você deve digitar um número entre 1 e 100!")
        continue

    correto  = palpite == numero_secreto
    maior = palpite > numero_secreto
    menor  = palpite < numero_secreto

    if(correto):
        print("\n*********************************")
        print("Parabéns, você acertou!")
        print("*********************************")
        break
    else:
        pontos_perdidos = abs(numero_secreto - palpite)
        pontos = pontos - pontos_perdidos
        if(maior):
            print("\nVocê errou! O número escolhido foi maior do que o número secreto.")
        elif(menor):
            print("\nVocê errou! O número escolhido foi menor do que o número secreto.")

    rodada_atual = rodada_atual + 1

print("\nFim do jogo.")
print("O número secreto era:", numero_secreto)
print("Sua pontuação foi de {} pontos".format(pontos))
print("\n*********************************")
3 respostas

Existem incontáveis formas de chegar na mesma solução, é difícil apontar uma porque ela soa como "bala de prata", "solução única e perfeita"... Então já desconsiderando esse tipo de linha de raciocínio, no seu código, no lugar do "else" você pode por outro ELIF com a condição para caso o valor seja 3, e por fim no ELSE você coloca o valor 0 na variávl total_tentativas e se preferir, uma mensagem carinhosa pro usuário

if(nivel == 1):
    total_tentativas = 20
elif(nivel == 2):
    total_tentativas = 10
elif(nivel == 3) :
    total_tentativas = 5
else:
    total_tentativas = 0
    print('Digite um nível de 1 a 3, animal!')
solução!
Removido a pedido do usuario.

Obrigado pelos inputs! O cenário com o uso do while achei mais adequado para a situação. Abraços!