#python
При вводе пустого или буквенного значения в строке float(raw_input()) возвращается ошибка ValueError; что нужно сделать, чтобы она не появлялась, а запрос повторялся?
Ответы
Ответ 1
raw_input() принимает ввод с клавиатуры. float() это цифровое значение, следовательно рас вы оборачиваете raw_input() то вводить нужно только цифры. Вот ещё варианты использование raw_input(): >>> int(raw_input("Input int (43): ")) Input int (43): 44 #ВВодим 44 44 >>> str(raw_input("Input str (text): ")) Input str (text): text text #Вводим text text 'text text' >>> float(raw_input("Input f (32): ")) Input f (32): 598 #Вводим 598 598.0 А еще можете пользоваться try: (except:) для обработок ошибок. Если вам нужно вводить и текст и цифры и всё подряд, то пользуйтесь вторым моим приведенным вариантом, там прокатит всё и пустое значение и цифры: >>> str(raw_input("Input str (text): ")) Input str (text): text text #Вводим text text 'text text' А так он ожидает только лишь цифру.Ответ 2
Можно обернуть ввод в try-except, как указали ответом выше и подставлять дефолтное значение, если будет введено что-то отличное от цифры, добавлю просто пример: val = 0.0 try: val = float(raw_input()) except ValueError: val = 1.0 Тогда лучше так: def get_float(): val = 0.0 try: val = float(raw_input()) #в версии Py3k просто input() except ValueError: val = 1.0 return val Дважды делать return не к чему на мой взгляд:)Ответ 3
Всем большое спасибо! У меня всё получилось. def fun(): while 1: try: val = float(raw_input("Введите число: ")) break except ValueError: print "Вводить нужно только числа!" return val После ввода буквы или пустого значения, запрос на ввод повторяется как я и хотел!
Комментариев нет:
Отправить комментарий