Уведомления

Группа в Telegram: @pythonsu

#1 Май 12, 2015 14:32:15

Tv1st
Зарегистрирован: 2015-05-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

"if not a and b is not None

Добрый день, пока учу python по книге и тут есть небольшой пример программки

import random
def get_int(msg, minimum, default):
    while True:
        try:
            line = input(msg)
            if not line and default is not None:
                return default
            i = int(line)
            if i < minimum:
                print("must be >=", minimum)
            else:
                return i
        except ValueError as err:
            print(err)
rows = get_int("rows: ", 1, None)
columns = get_int("columns: ", 1, None)
minimum = get_int("minimum (or Enter for 0): ", -1000000, 0)
default = 1000
if default < minimum:
    default = 2 * minimum
maximum = get_int("maximum (or Enter for " + str(default) + "): ", minimum, default)
row = 0
while row < rows:
    line = ""
    column = 0
    while column < columns:
        i = random.randint(minimum, maximum)
        s = str(i)
        while len(s) < 10:
            s = " " + s
        line += s
        column += 1
    print(line)
    row += 1

Не могу разобраться, как действует строка “if not line and default is not None:”. То есть, вроде бы понимаю, что когда line is None, а default is not None, то должно возвращаться значение default. Но не могу логически понять “if not line and default is not None:”, для меня это все равно, что “if line and default is None”.

Офлайн

#2 Май 12, 2015 15:16:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

"if not a and b is not None

от нас вы чего хотите?



Офлайн

#3 Май 12, 2015 16:06:30

Tv1st
Зарегистрирован: 2015-05-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

"if not a and b is not None

FishHook
от нас вы чего хотите?

хочу понять строку “if not line and default is not None:”, если кто может объяснить когда она выполняется и почему, то буду признателен. Как я вижу ее сейчас, она выполняется только тогда, когда line и default = None, на на деле это не так.

Офлайн

#4 Май 12, 2015 16:12:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

"if not a and b is not None

Tv1st
когда line и default = None
Это не верно.
Вы имеете преставление, о том, что такое логические операции в программировании? Если нет, то нам не о чем беседовать, пополняйте свои знания чтением литературы. Если да, то предлагаю расставить в непонятном выражении скобки для прояснения приоритета операторов.



Офлайн

#5 Май 12, 2015 21:12:20

Tv1st
Зарегистрирован: 2015-05-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

"if not a and b is not None

FishHook
да, то предлагаю расставить в непонятном выражении скобки для прояснения приоритета операторов.

Сначала я думал так
if not ((line and default) is not None):

Потом попробовал переосмыслить на
if ((not line) and default) is not None:

Что выглядело более похожим на правду, но при замене этой строки на
if line and not default is None:

Я получил ошибку. Ладно, буду продолжать обучение, может позже осознаю этот момент, в любом случае, спасибо.

Офлайн

#6 Май 12, 2015 23:52:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

"if not a and b is not None

python.org. приоритет операций

Tv1st
if not line and default is not None:
if ((not line) and (default is not None)):
Где not line даёт истину, если
line = None | False | '' | () | [] | {} | set() | ...



Отредактировано py.user.next (Май 12, 2015 23:53:36)

Офлайн

#7 Май 13, 2015 21:02:17

Tv1st
Зарегистрирован: 2015-05-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

"if not a and b is not None

py.user.next
python.org. приоритет операций

Спасибо большое

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version