Найти - Пользователи
Полная версия: "if not a and b is not None
Начало » Python для новичков » "if not a and b is not None
1
Tv1st
Добрый день, пока учу 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”.
FishHook
от нас вы чего хотите?
Tv1st
FishHook
от нас вы чего хотите?

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

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

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

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

Я получил ошибку. Ладно, буду продолжать обучение, может позже осознаю этот момент, в любом случае, спасибо.
py.user.next
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() | ...
Tv1st
py.user.next
python.org. приоритет операций

Спасибо большое
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