#python #error-handling
#python #обработка ошибок
Вопрос:
это домашнее задание от udemy, мое решение не может работать, вот вопрос:
Напишите функцию, которая запрашивает целое число и выводит его квадрат. Используйте цикл while с блоком try, except, else для учета неправильных входных данных.вот мое решение:
def ask():
while True:
try:
user_input = int(input('give me int energe:'))
squ = user_input**2
print('boom! show you my power:' squ)
except:
print('lack of int energe')
continue
else:
print('Gotcha')
break
finally:
print('boooooom')
pass
если я ввожу str, исключение работает хорошо, но даже если я ввожу int, он также показывает тот же результат, что и str, почему это происходит??
вот правильное решение:
def ask():
while True:
try:
n = int(input('Input an integer: '))
except:
print('An error occurred! Please try again!')
continue
else:
break
print('Thank you, your number squared is: ',n**2)
Я не уверен, почему моя попытка не удалась
Ответ №1:
Ваше print
утверждение выдает исключение. Вы не можете добавить строку и значение int с помощью
. Либо используйте
print('boom! show you my power:' str(squ))
или
print('boom! show you my power:', squ)
В общем, нетипизированные операторы except — действительно плохая идея. Если бы вы вместо этого написали except ValueError:
, улавливая только ошибку, вызванную попыткой преобразовать строку в int с помощью int()
функции, вы бы сразу увидели проблему.
Комментарии:
1. Спасибо вам ооочень много 🙂
Ответ №2:
В вашем коде ошибка заключается в:
print('boom! show you my power:' squ)
squ
это type int
, и вы используете
оператор, где в левой части есть строка, а в правой — int . Либо измените int на строку, либо используйте ,
символ. Любой из них будет работать:
print('boom! show you my power:', squ)
print('boom! show you my power:' str(squ))