Форум сайта python.su
0
В процессе изучения языка написал функцию получения числа от пользователя с проверкой введенных данных на вхождение в множество положительных целых чисел (Z+). Что и как можно оптимизировать?
def GetNum(): while True: num = raw_input("Введите положительное целое число: ") try: if int(num) > 0: return int(num) print("Введеное число не положительно, попробуйте еще раз") except: print("Введенные данные не являются положительным целым числом, попробуйте еще раз") continue
Офлайн
173
- имя функций по PEP-8;
- num переводится в int два раза, заведите переменную;
- except: - ловит все возможные исключения, пользователь даже не сможет прервать цикл получения числа нажав CTRL+C. Указывайте тип исключения явно: except ValueError;
- continue в except не обязателен, если дальше в цикле ничего нет.
Офлайн
0
- “mixedCase is allowed only in contexts where that's already the prevailing style” - Однако, спасибо за отправку к REP-8, приму к сведению.
- ок
- не посчитал существенным, т.к. цикл легко прерывается на ожидании ввода. Аргументируйте пожалуйста, зачем ждать что-то еще?
- угу, случайно оставил от первой конструкции
def get_num(): while True: try: num = int(raw_input("Введите положительное целое число: ")) if num > 0: return num print("Введенное число не положительно, попробуйте еще раз") except ValueError: print("Введенные данные не являются положительным целым числом, попробуйте еще раз")
Офлайн
173
RiSДа, с CTRL+C погарячился. А явное указание типа исключения спасает от того, что другие ошибки позволят программе работать дальше. К этому случаю не относится, но если бы в будущем добавился функционал, появились бы другие исключения, которые бы были пропущены (например взятие элемента из списка или из словаря). Ну и Explicit is better than implicit.
не посчитал существенным, т.к. цикл легко прерывается на ожидании ввода. Аргументируйте пожалуйста, зачем ждать что-то еще?
RiSЭто про список? Вроде по правилам русского языка
Символ “;” - это необходимость, избыточный контроль или просто привычка? В смысле - в Python надо ставить символ конца выражения, т.к. …
.Офлайн