Marcado: tratamento de erros
- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 2 anos, 1 mês atrás por IcaroFilho.
-
AutorPosts
-
-
18 de outubro de 2022 às 16:29 #103554Hudson BarbosaParticipante
No Mundo 3 – PYTHON – Exercício 113
O professor propõe uma solução quase igual a essa:
def leiaInt(msg):
while True:
try:
n = int(input(‘Número: ‘))
except (ValueError, UnboundLocalError, TypeError, NameError):
print(f'<<ERRO>> Você digitou “{n}”. Não é um número inteiro. REPITA!’)
continue
else:
return n# Programa principal
num = leiaInt( ‘Digite um número: ‘ )
print(f’Você acabou de digitar o número {num}’)–> O PROBLEMA É QUE O MEU PYCHARM NÃO ACEITA ESSA SOLUÇÃO E AINDA CONTINUA MOSTRANDO OS ERROS.
–> ALGUÉM PODERIA ME AJUDAR? É POSSÍVEL CONVERSAR COM ALGUM INSTRUTOR DIRETAMENTE? -
22 de outubro de 2022 às 18:32 #103785IcaroFilhoModerador
Boa Tarde Hudson.
1- Poderia mandar este código formatado ( para checar se a indentação esta correta )
2- Qual seria o erro que o seu pycharm mostra ?3- Você pode chamar os erros pelo Exception e dar um apelido para depois chamar.
ex1:def leiaInt(msg): while True: try: n = int(input(msg)) print(n[0]) except Exception as err: print('err :',err ) continue else: return n # Programa principal num = leiaInt( 'Digite um número: ' ) print(f'você acabou de digitar o número {num}')
este trecho te retornara um TypeError com a seguinte mensagem
err : 'int' object is not subscriptable
ex2: com base no seu código
def leiaInt(msg): while True: try: n = int(input(msg)) except Exception as err: print('err :',err ) continue else: return n # Programa principal num = leiaInt( 'Digite um número: ' ) print(f'você acabou de digitar o número {num}')
segue abaixo a DOC do python referente a exceptions
<LINK>
É possível entrar em contato direto via Discord. -
25 de outubro de 2022 às 20:46 #103916Hudson BarbosaParticipante
Icaro, o código que usei foi esse:
def leiaInt(msg):
while True:
try:
n = int(input(‘Número: ‘))
except (ValueError, UnboundLocalError, TypeError, NameError):
print(f'<<ERRO>> Você digitou “{n}”. Não é um número inteiro. REPITA!’)
continue
else:
return n# Programa principal
num = leiaInt(‘Digite um número: ‘)
print(f’Você acabou de digitar o número {num}’)O erro, eu tentei te mandar um print pelo e-mail, mas não consigo então vou colar abaixo:
Traceback (most recent call last):
File “C:\Users\Hud\PycharmProjects\pythonexercicios\ex 113 – FUNÇÕES APROFUNDADAS EM PYTHON – Módulo 3 – ESTRUTURAS COMPOSTAS.py”, line 11, in leiaInt
n = int(input(‘Número: ‘))
ValueError: invalid literal for int() with base 10: ‘ç’During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “C:\Users\Hud\PycharmProjects\pythonexercicios\ex 113 – FUNÇÕES APROFUNDADAS EM PYTHON – Módulo 3 – ESTRUTURAS COMPOSTAS.py”, line 20, in <module>
num = leiaInt(‘Digite um número: ‘)
File “C:\Users\Hud\PycharmProjects\pythonexercicios\ex 113 – FUNÇÕES APROFUNDADAS EM PYTHON – Módulo 3 – ESTRUTURAS COMPOSTAS.py”, line 13, in leiaInt
print(f'<<ERRO>> Você digitou “{n}”. Não é um número inteiro. REPITA!’)
UnboundLocalError: local variable ‘n’ referenced before assignment -
25 de outubro de 2022 às 20:48 #103919Hudson BarbosaParticipante
Me desculpe. Não envia a indetação aqui. Me mande um e-mail seu para te enviar
-
25 de outubro de 2022 às 22:03 #103922IcaroFilhoModerador
Isto se dá pois a var ‘n’ não teve seu valor atribuído devido a tipagem incorreta *(quando o valor inserido for diferente de inteiro).
faça como eu mostrei, de um alias para a exceção e chame ela dentro do print. Ex:import traceback def leiaInt(msg): while True: try: n = int(input('Número: ')) except (ValueError, UnboundLocalError, TypeError, NameError) as err: print("".join(traceback.format_exception_only(type(err), err)).strip()) print(repr(err)) print(str(err)) print(err.args[0]) continue else: return n num = leiaInt('Digite um número: ') print(f'Você acabou de digitar o número {num}')
-
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.