Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2014 14:58:15

madfeliks
Зарегистрирован: 2014-04-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Исключения TypeError и ValueError

Всем привет! Я совсем недавно начал изучать python и есть пара вопросов, ответы на которые я не нашел в google.
Есть функция, проверяющая правильность ввода, ее код я скопипастил со stackoverflow

while True:
        try:
            choice = int(raw_input('Your choice: '))
        except TypeError:
            print 'input digit 1 or 2\n try once more'
        else:
            break

Вопрос первый: в таком виде код не работает, т.е. исключение при вводе не integer не обрабатывается. Зато все работает если TypeError заменить на ValueError… почему? Функция int() должна ведь выкинуть что то типа type mismatch и это ошибка типа, а не значения… или нет? Если я ошибаюсь, подскажите пожалуйста в чем.
Второй вопрос: как мне сюда прикрепить проверку введенного значения, так же с помощью исключений, а не if? Нужно чтобы все введенные значения кроме 1 и 2 вызывали исключение ValueError.

Заранее спасибо!

Офлайн

#2 Апрель 27, 2014 15:44:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Исключения TypeError и ValueError

madfeliks
и это ошибка типа, а не значения… или нет?
Нет, это ошибка значения переданного функции int.
madfeliks
так же с помощью исключений, а не if?
Я не знаю способа без if
if not i in [1,2]:
   raise Spring_Exception()



Офлайн

#3 Апрель 27, 2014 18:08:42

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Исключения TypeError и ValueError

Без if если assert заюзать

Офлайн

#4 Апрель 27, 2014 22:22:03

madfeliks
Зарегистрирован: 2014-04-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Исключения TypeError и ValueError

Спасибо за отклики!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version