Другие языки программирования и технологии
Логические операторы в Python 3 - объясните на пальцах?
Никак не могу понять, как это работает. Допустим:x = 5y = 2z = 0print(x and y) # возвращает 2print(y and x) # возвращает 5print(x and z) # возвращает 0что именно печатается? внешне выглядит, как вторая из переменных. почему не обе? почему не сумма?Также интересна работа операторов OR и NOT.
Питон 3? Вы типо из будущего прилетели?
С типом bool работает так:
not True == False
False and True == False
True and True == True
False and False == False
True or False == True
True or True == True
False or False == False
Верно: a and b == b and a
a or b == b or a
Для типа int 0 == False, non-zero int == True,
and и or выдают операнд, при котором в данном случае известно, что в результате выдет
2 and 3 == 3 (известно, что с 2 и 3 - True)
0 and 3 == 0 (заведомо известно, что с 0 - False)
4 or 5 == 4
0 or 5 == 5 (с нулем может быть True и False, с 5 - точно True)
Надеюсь, помог
P.S. Ух ты, а ведь и правда. Какой-то python 3.1 есть. Отстал от жизни.
А чем я объяснил не на пальцах? Читайте догда статью в википедии про ленивые вычисления
С типом bool работает так:
not True == False
False and True == False
True and True == True
False and False == False
True or False == True
True or True == True
False or False == False
Верно: a and b == b and a
a or b == b or a
Для типа int 0 == False, non-zero int == True,
and и or выдают операнд, при котором в данном случае известно, что в результате выдет
2 and 3 == 3 (известно, что с 2 и 3 - True)
0 and 3 == 0 (заведомо известно, что с 0 - False)
4 or 5 == 4
0 or 5 == 5 (с нулем может быть True и False, с 5 - точно True)
Надеюсь, помог
P.S. Ух ты, а ведь и правда. Какой-то python 3.1 есть. Отстал от жизни.
А чем я объяснил не на пальцах? Читайте догда статью в википедии про ленивые вычисления
Очень просто. Python я абсолютно не знаю, но это не имеет значения, все эти языки (C, Pascal; Basic; Python и так далее) очень похожи.
При логических операциях с целыми числа рассматриваются как массивы битов, и операции проводятся как с двумя массивами битов поразрядно.
Например, 5 это 110 в двоичной системе, а 2 это 10
110 and 010 при поразрядном применении операции and (она выдает 1 только если оба операнда равны 1, то есть "и то, и то") даст 010, в десятичном представлении 2
Еще раз : операции применяются к представлению чисел в машине, рассматриваемому как массивы битов, поразрядно, и результат - массив битов - рассматривается как новое число.
Все эти операции над целыми были сделаны для возможности программирования на уровне битов, рассматривая числа как массивы битов.
При логических операциях с целыми числа рассматриваются как массивы битов, и операции проводятся как с двумя массивами битов поразрядно.
Например, 5 это 110 в двоичной системе, а 2 это 10
110 and 010 при поразрядном применении операции and (она выдает 1 только если оба операнда равны 1, то есть "и то, и то") даст 010, в десятичном представлении 2
Еще раз : операции применяются к представлению чисел в машине, рассматриваемому как массивы битов, поразрядно, и результат - массив битов - рассматривается как новое число.
Все эти операции над целыми были сделаны для возможности программирования на уровне битов, рассматривая числа как массивы битов.
Все просто, что 0 - ложно, остальное истина. Читаем слева направо.
1) Видим "x and y".. x = 5, значит истина, идем дальше. . y = 2, истина, конец. . Ммм. . Что было последним? 2? Ну 2 и печатаем.
2) "y and x", y = 2 - истина, идем дальше. . запоминается только последнее значение. . x - последнее.
3) Аналогично.
А вот если бы было "z and x", тогда было бы 0.. Потому что "and" прекращает работу когда значение ложное.
1) Видим "x and y".. x = 5, значит истина, идем дальше. . y = 2, истина, конец. . Ммм. . Что было последним? 2? Ну 2 и печатаем.
2) "y and x", y = 2 - истина, идем дальше. . запоминается только последнее значение. . x - последнее.
3) Аналогично.
А вот если бы было "z and x", тогда было бы 0.. Потому что "and" прекращает работу когда значение ложное.
Похожие вопросы
- Зачем нужен join(sql) и как он работает? Если можно, объясните на пальцах
- с++ зачем нужны побитовые операции если есть обычные логические операторы?
- Как скомпилировать *.py скрипт в *.exe программу? (Python 3.1.1)
- Срочно нужен программист, способный "чайнику" объяснить на пальцах...
- Объясните тему Циклы, а пальцах? C++
- Программисты Python, Pascal или Scheme для обучения программированию?
- Зачем изучают Pascal если есть Python?
- С++ Пожалуйста, объясните чайнику о операторах new и delete
- С какого языка начать программирование Pascal или Python?
- Стоит ли изучать Python как язык для WEB-разработки?