2
respostas

Duvida atividade Tabuada

range_definido = range(1 , 11)
numero_digitado = int(input('Digite um número para saber sua tabuada\n'))

def inserir_numero():
    numero_digitado
    print()

def tabuada():
    try:
        for i in range_definido :
            resultado = numero_digitado * i
            print(f'{numero_digitado} x {i} = {resultado}')
    except:
        print('Opção inválida')

   
def main():
    inserir_numero()
    tabuada()


if __name__ == '__main__':
    main()

Não sei porque o meu !"try" não esta funcionando. Quero que, ao digitar uma letra imprima a mensagem de "Opção inválida" Poderiam me ajudar? Obrigado desde já!

2 respostas

Olá Luiz, tudo bem? Tenho algumas sugestões para o código, se der certo me avise por gentileza.

O problema está no seu tratamento de exceções. No momento, vc está tentando capturar uma exceção geral usando except:. Isso não é muito específico e pode não capturar exceções relacionadas à conversão de entrada de texto para um número inteiro.

Uma maneira melhor seria capturar a exceção específica que ocorre quando a conversão falha. Além disso, é uma boa prática ser o mais específico possível ao capturar exceções. Vamos ajustar seu código para capturar a exceção ValueError, que ocorre quando a conversão de entrada para um número falha:

range_definido = range(1 , 11)

def inserir_numero():
    try:
        numero_digitado = int(input('Digite um número para saber sua tabuada\n'))
        return numero_digitado
    except ValueError:
        print('Opção inválida')
        return None

def tabuada(numero_digitado):
    if numero_digitado is not None:
        for i in range_definido:
            resultado = numero_digitado * i
            print(f'{numero_digitado} x {i} = {resultado}')

def main():
    numero_digitado = inserir_numero()
    tabuada(numero_digitado)

if __name__ == '__main__':
    main()

Nesse código, except ValueError: é usado para capturar especificamente exceções relacionadas à conversão de texto para um número inteiro. Se ocorrer um ValueError, a mensagem 'Opção inválida' será impressa. Caso contrário, a tabuada será calculada como esperado.

Perfeito Erick! Funciona 100%!!

Só queria tirar algumas dúvidas pra ver se entendi a lógica

def inserir_numero():
    try:
        numero_digitado = int(input('Digite um número para saber sua tabuada\n'))
        return numero_digitado
    except ValueError:
        print('Opção inválida')
        return None

Nesse trecho entendi 100%!

def tabuada(numero_digitado):
    if numero_digitado is not None:
        for i in range_definido:
            resultado = numero_digitado * i
            print(f'{numero_digitado} x {i} = {resultado}')

Nesse trecho eu preciso por o "numero_digitado" como argumento da função tabuada para a função conseguir puxar os valores referente ao "numero_digitado", uma vez que essavariável tinha sido criada em outro bloco de codigos? É isso?

def main():
    numero_digitado = inserir_numero()
    tabuada(numero_digitado)

Nesse trecho, não entendi exatamente o porque precisa ser escrito dessa maneira " numero_digitado = inserir_numero()" . Percebi que se nao for escrito assim o "tabuada(numero_digitado)" nao assume o valor mas, é só por esse motivo?