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

E se o usuário escolher um nível inexistente?

Eu estou tentando fazer com que o código verifique se é um dos níveis existentes, se não, force o usuário a escolher novamente um dos níveis.

import random

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

print("Deseja iniciar o jogo?")
inicio = int(input("1 (Sim)     2 (Não)"))
print()

if inicio == 1:
    print("E lá vamos nós")
    print()
elif inicio == 2:
    exit("Até mais...")

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

dificuldade = int(input("Escolha o nível de dificuldade: 1 (Fácil)   2 (Médio)   3 (Difícil) "))

while dificuldade < 1 or dificuldade > 3:

    if dificuldade == 1:

        total_de_tentativas = 5

    elif dificuldade == 2:

        total_de_tentativas = 3

    elif dificuldade == 3:

        total_de_tentativas = 1

    else:
        print("Escolha um dos níveis disponíveis")
        dificuldade = int(input("Por favor, escolha um dos níveis de disponíveis: 1, 2 ou 3 "))



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!")
        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.")

print("Fim do jogo")
1 resposta
solução!

Oi Arthur, tudo bem?

Veja que você está atribuindo as tentativas dentro do while que está validando a entrada do valor da dificuldade, por isso, se a entrada for válida, não a variável total_de_tentativas vai ficar com o valor 0. Você pode resolver esse problema retirando a atribuição de dentro do while:

import random

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

print("Deseja iniciar o jogo?")
inicio = int(input("1 (Sim)     2 (Não)"))
print()

if inicio == 1:
    print("E lá vamos nós")
    print()
elif inicio == 2:
    exit("Até mais...")

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

dificuldade = int(input("Escolha o nível de dificuldade: 1 (Fácil)   2 (Médio)   3 (Difícil) "))

while dificuldade < 1 or dificuldade > 3:
    print("Escolha um dos níveis disponíveis")
    dificuldade = int(input("Por favor, escolha um dos níveis de disponíveis: 1, 2 ou 3 "))

if dificuldade == 1:

    total_de_tentativas = 5

elif dificuldade == 2:

    total_de_tentativas = 3

elif dificuldade == 3:

    total_de_tentativas = 1

print('To antes do for ', total_de_tentativas)
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!")
        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.")

print("Fim do jogo")