Tratamento de erros no Python

Suponhamos que eu receba uma variável por input de algum usuário qualquer de meu programa.
Esta variável estará em int ou float, por exemplo.
Se o usuário digitar uma letra no input o python encerra o programa e dá a mensagem de erro. Eu queria que ao invés disso ele dissesse o erro e fizesse a pergunta novamente da variável.

Exemplo:

num = int(input(" Numero ")) e o usuário digitar a letra "A"

ao invés do erro no python, quero que ele diga “Essa não é uma resposta válida” e pergunte novamente.

alguém pode ajudar? :stuck_out_tongue:

Talvez a idéia de fazer o tratamento da exceção dentro de um while (verdadeiro enquanto
lançar a exceção do tipo ValueError) o ajude.
Caso o usuário introduzir um valor que seja possível converter a float (com o int está tudo bem) a exceção é lançada, imprimindo a mensagem de erro e voltando ao raw_input.
Se a introdução não lançar nenhuma exceção (do tipo ValueError), vai ao break, saindo do while.

Um código em python2 seria ± assim:

# -*- coding: utf-8 -*-

while True:
  try:
    s = float(raw_input('Número: >> '))
    break
  except ValueError:
    print 'Essa não é uma resposta válida\n'

print(""“Escolha uma das opções de ‘Olá mundo’:
[ 1 ] Verde
[ 2 ] Amarelo
[ 3 ] Vermelho”"")

try:
escolha = int(input("Qual das opções? ").strip())

if escolha == 1:
    print("\033[1;32mOlá, mundo!\033[m")
elif escolha == 2:
    print("\033[1;33mOlá, mundo!\033[m")
elif escolha == 3:
    print("\033[1;31mOlá, mundo!\033[m")

else:
    print("Opção não aceita! Escolha entre 1, 2 ou 3.")

except ValueError:
print(“COMANDO NÃO ACEITO!”)

(Obs. Esse foi meu codigo usando cores e outras coisas, mas o que vai resolver é colocar o TRY, e o if dentro dele. Caso o usuario digite outra coisa, o EXCEPT VALUEERROR vai resolver mostrando um print.

Voce pode tentar utilizar esse exemplo:

from decimal import Decimal, InvalidOperation

while True:
    print('Please, enter a number:')
    number = input()

    try:
        number = Decimal(number)
        break
    except InvalidOperation:
        print('Invalid number')

print(f'Typed value: {number}')