Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел. [RSS Feed]

#1 Янв. 4, 2013 21:29:51

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

Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел.

В процессе изучения языка написал функцию получения числа от пользователя с проверкой введенных данных на вхождение в множество положительных целых чисел (Z+). Что и как можно оптимизировать?

def GetNum():
    while True:
        num = raw_input("Введите положительное целое число: ")
        try:
            if int(num) > 0:
                return int(num)
            print("Введеное число не положительно, попробуйте еще раз")
        except:
            print("Введенные данные не являются положительным целым числом, попробуйте еще раз")
            continue



Офлайн

#2 Янв. 4, 2013 21:48:31

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел.

- имя функций по PEP-8;
- num переводится в int два раза, заведите переменную;
- except: - ловит все возможные исключения, пользователь даже не сможет прервать цикл получения числа нажав CTRL+C. Указывайте тип исключения явно: except ValueError;
- continue в except не обязателен, если дальше в цикле ничего нет.

Офлайн

#3 Янв. 4, 2013 22:38:48

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

Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел.

- “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 надо ставить символ конца выражения, т.к. …



Офлайн

#4 Янв. 5, 2013 00:02:56

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел.

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

RiS
Символ “;” - это необходимость, избыточный контроль или просто привычка? В смысле - в Python надо ставить символ конца выражения, т.к. …
Это про список? Вроде по правилам русского языка .
В Python использовать “;” нет особой необходимости.

Офлайн

  • Начало
  • » Python для новичков
  • » Выполнить проверку содержимого строки на вхождение в множество положительных целых чисел. [RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version