Найти - Пользователи
Полная версия: Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел.
Начало » Python для новичков » Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел.
1
RiS
В процессе изучения языка написал функцию получения числа от пользователя с проверкой введенных данных на вхождение в множество положительных целых чисел (Z+). Что и как можно оптимизировать?

def GetNum():
    while True:
        num = raw_input("Введите положительное целое число: ")
        try:
            if int(num) > 0:
                return int(num)
            print("Введеное число не положительно, попробуйте еще раз")
        except:
            print("Введенные данные не являются положительным целым числом, попробуйте еще раз")
            continue
reclosedev
- имя функций по PEP-8;
- num переводится в int два раза, заведите переменную;
- except: - ловит все возможные исключения, пользователь даже не сможет прервать цикл получения числа нажав CTRL+C. Указывайте тип исключения явно: except ValueError;
- continue в except не обязателен, если дальше в цикле ничего нет.
RiS
- “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("Введенные данные не являются положительным целым числом, попробуйте еще раз")

Символ “;” - это необходимость, избыточный контроль или просто привычка? В смысле - в Python надо ставить символ конца выражения, т.к. …
reclosedev
RiS
не посчитал существенным, т.к. цикл легко прерывается на ожидании ввода. Аргументируйте пожалуйста, зачем ждать что-то еще?
Да, с CTRL+C погарячился. А явное указание типа исключения спасает от того, что другие ошибки позволят программе работать дальше. К этому случаю не относится, но если бы в будущем добавился функционал, появились бы другие исключения, которые бы были пропущены (например взятие элемента из списка или из словаря). Ну и Explicit is better than implicit.

RiS
Символ “;” - это необходимость, избыточный контроль или просто привычка? В смысле - в Python надо ставить символ конца выражения, т.к. …
Это про список? Вроде по правилам русского языка .
В Python использовать “;” нет особой необходимости.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB