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

Escolha do nível no jogo de Adivinhação

Olá pessoal! Estou com uma dúvida, ao recriar o código do jogo da adivinhação, na parte de colocar uma restrição quanto a escolha do nivel de dificuldade (1, 2 ou 3), caso fosse digitado outro número que não esses, tive dificuldade pois tentei colocar uma função "if" e caso o jogador colocasse um número diferente desses o código executaria um "break". Não deu certo pois o "break" não funciona fora dos laços "for" ou "while", ok! Resolvi olhar o código do curso para ver qual foi a solução implementada nesse caso, mas não consegui achar no código.

No código do curso (colado abaixo) se for digitado um numero diferente aparece uma mensagem dizendo que deve ser digitado 1,2 ou 3, mas o código continua, de alguma forma tem uma verificação lá, só não encontrei kkkk

Como faço para que na hipótese de ser digitado um valor diferente dos que estão no menu (1,2 ou 3) o jogo fosse interrompido e uma mensagem exibida ?

(Saída no terminal digitando o numero 4)

Escolha um nível de dificuldade: 1-Fácil 2-Médio 3-Difícil 4** **Valor digitado deve ser 1, 2 ou 3 Digite um número entre 0 e 100:

(Código do curso) import random

def jogar():

print("*********************************")
print("Bem vindo ao jogo de Adivinhação!")
print("*********************************")

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

print("Qual nível de dificuldade?")
print("(1) Fácil (2) Médio (3) Difícil")

nivel = int(input("Defina o nível: "))

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("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("Você acertou e fez {} pontos!".format(pontos))
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior do que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor do que o número secreto.")
        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos

print("Fim do jogo")

if(name == "main"): jogar()

2 respostas
solução!

Olá andré.

Então tipo, eu tentei criar um raciocinio para montar uma estrutura que fizesse essa restirção e eu cheguei nesse codiogo abaixo

def retorno():

    nivel = int(input("digite nivel"))

    if (nivel == 1):
        print('facil')
        pass
    elif(nivel == 2):
        print('medio')
        pass
    elif (nivel == 3):
        print('dificil')
        pass
    else:
        print('não tem essa opção')
        return retorno()

retorno()

Bom sobre a logica que eu pensei foi em definir uma função chamada retorno que é a primeira linha def retorno() e dentro dessa função colocar a estrutura de ifs, se cada if for executado corretamente então ele faz o print e tambem opass que faz com que ele siga a diante sem passar pelos proximo elifs ou else. Na parte do else seria tipo qualquer numero que não fosse o 1,2,3 ele imprimirá na tela "não tem essa opção", e ainda executaria o retorno para o começo da função.Isso seria o bloco da função, mas no caso você ainda teria que chamar a função que é o retorno() que eu coloqueina ultima linha

OBS: Ficar atento a indentação do codigo

Obrigado Samuel!

Isso já irá funcionar!