1
resposta

[Dúvida] Jogo de Adivinhação

Estou com uma duvida em relação ao Try/Except, eu usei ele para tratar a questão dos valores não inteiros, mas quando entra no except, ele simplesmente fecha o código. O que tem de errado ?

Segue a minha solução:

import random

computador  = random.randint(1, 100)
tentativas = 0

def valor():
    global tentativas
    valores = int(input("\nInsira um número entre 1 e 100: "))

    if valores > 100 or valores < 1: 
        print("Valor fora do intervalo! Tente novamente.")

    if valores < computador:
        tentativas += 1
        print("\nTente um número maior!")


    elif valores > computador:
        tentativas += 1 
        print("\nTente um número menor!")

    else:
        print("\nParabéns ! Você ganhou o jogo !!")
        print(f'\nO número correto era: {computador}')
        print(f'\nCom esse número de tentativas: {tentativas}')
        exit()


print("Bem-vindo ao jogo de Adivinhação!")
try: 
    while True:
        valor()

except ValueError:
    print("Entrada inválida: Ensira um número inteiro.")
1 resposta

Olá Vitor! Como vai?

Para corrigir isso, você pode colocar o bloco try/except dentro da função valor(), de forma que ele trate a exceção e permita que o usuário insira um novo valor. Aqui está uma sugestão de como você pode modificar seu código:

import random

computador = random.randint(1, 100)
tentativas = 0

def valor():
    global tentativas
    while True:
        try:
            valores = int(input("\nInsira um número entre 1 e 100: "))

            if valores > 100 or valores < 1:
                print("Valor fora do intervalo! Tente novamente.")
                continue

            tentativas += 1

            if valores < computador:
                print("\nTente um número maior!")

            elif valores > computador:
                print("\nTente um número menor!")

            else:
                print("\nParabéns! Você ganhou o jogo!!")
                print(f'\nO número correto era: {computador}')
                print(f'\nCom esse número de tentativas: {tentativas}')
                break
        except ValueError:
            print("Entrada inválida: Insira um número inteiro.")

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

Com essa abordagem, o try/except está dentro do loop da função valor(), permitindo que o usuário continue tentando até fornecer uma entrada válida. Assim, o programa não será encerrado quando uma exceção for capturada.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.