#python-3.x
#python-3.x
Вопрос:
Напишите программу, которая получает входные данные от пользователя, запрашивая «Дайте мне ввод:», и передает эту строку в «silly_function», если функция возвращает без ошибок. просто распечатайте все, что она вернула. Однако: если функция выдает ошибку ValueError, программа должна вместо этого напечатать «Я не могу использовать это значение»; если функция выдает ошибку TypeError, программа должна вместо этого напечатать «Недопустимый ввод»
def silly_function(a):
a = input('Give me an input')
try:
sily_function(a)
except ValueError:
print('I cannot see this value')[enter image description here][1]
Комментарии:
1. Здравствуйте, добро пожаловать в SO, в чем ваш вопрос?
2. Где ошибки моей программы?
3. Есть
silly_function != sily_function
?. Если да, то каков код для функции sily ? Если нет, то прямо сейчас вы повторяете бесконечно. Невозможно, чтобы silly_function выводила значение Value_Error, поскольку в нем ничего нет, и никакого завершения вообще.4. я забыл букву «l» в «sily_function (a)», которая должна быть silly_function (a)
Ответ №1:
Давайте попробуем это вместе.
Анализ кода
def silly_function(a):
a = input('Give me an input')
это нормально, это предложит пользователю ввести**
try:
silly_function(a)
Зачем вам нужно снова вызывать silly_function ? Я не думаю, что это было предполагаемое поведение?
Кроме того, silly_function не делает ничего, что приведет к завершению рекурсии или генерированию ошибки, поэтому это неизбежно приведет к сбою.
except ValueError:
print('I cannot see this value')[enter image description here][1]
Предположим, что это опечатка, но see != use
и вы обрабатываете только одну ошибку, а не другую.
Предложение
Давайте прямо в псевдокоде немного поможем
def error_handling_function(a):
a = input('Give me an input')
try:
silly_function(a)
except #input error here:
#handle error here
except #input error here:
#handle error here
def silly_function(a):
#write code that can break and generate the two error you are looking for