1
resposta

Qual o motivo do jogo encerrar se digitarmos uma opção de dificuldade maior que zero?

Olá, a minha dúvida é a seguinte:

Caso eu digite um número maior que 3 o jogo encerra, gostaria de saber o motivo. Qual a lógica ali? Vi que um número acima de 3 para dificuldade o numero de tentativas permanece zero igual inicialmente declarado.

Onde o range e rodada atuam nesse caso?

Segue meu código.

import random

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

numero_secreto = random.randrange(1,101)
total_de_tentativas = 0
#print(numero_secreto)

print("Qual o nível de dificuldade?")
print(" | (1) Fácil   |\n | (2) Normal  |\n | (3) Difícil |\n")

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

if (nivel==1):
    total_de_tentativas = 20
elif (nivel==2):
    total_de_tentativas =10
elif (nivel==3):
    total_de_tentativas =5
else:
    print("***Digite uma opção válida!***")

for rodada in range(1, total_de_tentativas+1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute = int(input("Digite um número entre 1 e 100: "))
    print("Você digitou", chute)

    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")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor que o número secreto.")


print("Fim do jogo")

Abaixo o print

print da tela onde executei o Run no pycharm

1 resposta

Caio, se você seleciona uma dificuldade diferente de 1, 2 ou 3, o código entra na condição de "else", não atribui um novo valor a variável "total_de_tentativas" e, portanto, não tem um range para iterar no seu "for".

O que você poderia fazer é colocar um loop que obrigue o usuário a selecionar uma opção válida. Sempre retornando a requisição de input caso ele ou ela não insira uma opção válida.

import random

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

numero_secreto = random.randrange(1,101)
total_de_tentativas = 0
#print(numero_secreto)

print("Qual o nível de dificuldade?")
print(" | (1) Fácil   |\n | (2) Normal  |\n | (3) Difícil |\n")

nivel = 0

while (nivel < 1 or nivel > 3):

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

    if (nivel==1):
        total_de_tentativas = 20
    elif (nivel==2):
        total_de_tentativas =10
    elif (nivel==3):
        total_de_tentativas =5
    else:
        print("***Digite uma opção válida!***")

for rodada in range(1, total_de_tentativas+1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute = int(input("Digite um número entre 1 e 100: "))
    print("Você digitou", chute)

    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")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor que o número secreto.")


print("Fim do jogo")