Найти в Дзене

Программирование на Python. Основы логических выражений

В этом уроке мы научимся переводить различные логические выражения (утверждения) на язык программирования. К примеру, в математике выражения сравнения выглядят так: 5 > 2, х ≠ у и т.п. В программировании все сравнения являются вопросом, требующим ответа. То есть мы как бы спрашиваем у компьютера, больше ли пять, чем два. Поэтому выражение 5 > 2 требует ответа, действительно ли это так, или нет. Самым простым вариантом получения ответа является использование функции print(), с которой мы уже знакомы. Эта функция, как мы знаем, позволяет не только вывести на экран ту или иную информацию, но и произвести вычисление и вывести результат. Логическое выражение (а именно так называются все сравнения в программировании) тоже можно вычислить. Результатом вычисления будет один из двух вариантов: или да, или нет. В зависимости от языка программирования, на экран может выводиться разные варианты, обозначающие да и нет. В Python это, соответственно, True и False – Истина и Ложь. Например, если мы

В этом уроке мы научимся переводить различные логические выражения (утверждения) на язык программирования.

К примеру, в математике выражения сравнения выглядят так: 5 > 2, х ≠ у и т.п. В программировании все сравнения являются вопросом, требующим ответа. То есть мы как бы спрашиваем у компьютера, больше ли пять, чем два. Поэтому выражение 5 > 2 требует ответа, действительно ли это так, или нет.

Самым простым вариантом получения ответа является использование функции print(), с которой мы уже знакомы. Эта функция, как мы знаем, позволяет не только вывести на экран ту или иную информацию, но и произвести вычисление и вывести результат.

Логическое выражение (а именно так называются все сравнения в программировании) тоже можно вычислить. Результатом вычисления будет один из двух вариантов: или да, или нет. В зависимости от языка программирования, на экран может выводиться разные варианты, обозначающие да и нет. В Python это, соответственно, True и False – Истина и Ложь.

Например, если мы напишем 5 > 2 в Python Shell и нажмем [Enter], то выйдет True. Иными словами, утверждение, что 5 больше 2 – верное.

В программном коде для вычисления логических выражений мы сейчас будем использовать функцию print():

print(5 > 2)

Можно сравнивать не только конкретные значения, но и переменные. Если, к примеру, переменная Х=10, а У=20, то результатом выполнения команды

print(x == y)

будет False – потому что 10 ≠ 20.

Как вы уже могли заметить, оператор сравнения равенства в Питоне обозначается как двойной знак равенства. А все потому, что одинарный знак равенства в Python (да и не только в нем, кстати) обозначает не сравнение, а присвоение значения. То есть, когда мы пишем

a = 10

этим самым мы говорим, что переменная А теперь получает значение 10. Поэтому использование одного знака «равно» в логическом выражении является ошибкой.

Итак, самыми простыми операторами сравнения являются следующие:

  • > Больше?
  • < Меньше?
  • >= Больше или равно?
  • <= Меньше или равно?
  • == Равно?
  • != Не равно?

Мы не зря поставили везде знак вопроса, потому что, повторимся, в программировании логические выражения являются вопросительными, т.е. в результате их вычисления вы получаете ответ True или False.

Теперь о том, для чего это нужно. Все просто. Программы должны уметь принимать решения, исходя из того, какие данные они получают. А это невозможно без проверки этих данных. А как проверять? Вот именно так и проверять: равно ли что-то чему-то и т.д.

Логические выражения могут быть сложными, состоящими из нескольких операторов. Например, как спросить, больше ли переменная A числа 10, но меньше 50? Во многих языках программирования данное логическое выражение имеет вид

(a > 10) and (a < 50)

Но в Python это немного проще:

10 < a < 50

А вообще, к слову, логические выражения могут абсолютно любой длины, поэтому нужно научиться их формировать. Используйте скобки, чтобы отделить одно сравнение от другого, объединяйте сравнения операторами между скобок. В общем, все как в математике.

Вы заметили AND? Это тоже оператор сравнения. Он используется в сложных выражениях. Обозначается, как и в английском: И. То есть, чтобы в результате ответ получился положительным (True), необходимо, чтобы положительными были оба сравнения. Если одно из сравнений не дает положительно результата, то все выражение выдаст False. Это и понятно: если, к примеру, А больше 10, но не меньше 50, то нам такая А не нужна. Условие не выполняется.

Кроме AND существует еще несколько. Мы пока рассмотрим OR.

AND и OR являются самыми распространенными. С их помощью можно построить очень сложные логические выражения. Ах, да, забыл уточнить. Придумывать логические выражения для решения поставленной задачи должен именно программист. Если программист научится хорошо пользоваться всеми операторами сравнения, то можно сказать, что он научился мыслить.

Итак, OR переводится как ИЛИ. В чем разница? Проще это понять, воспользовавшись предыдущим примером. Если в том случае у нас было железное условие 10<a<50, то выражение

(a > 10) or (a < 50)

На человеческий язык можно интерпретировать так: если А больше 10 или меньше 50, то это нормально.

Давайте разберемся, при каких вариантах будет «нормально». К примеру, А=60. По первому сравнению у нас положительный вариант, т.к. 60 больше 10. А по второму сравнению у нас отрицательный вариант, т.к. 60 не меньше 50, а больше. Но OR – это ИЛИ. То есть, нас устраивает или то, или другое. Так как первое сравнение выдает положительный результат, то и все выражение выдаст положительный результат – хватает и одно положительного результата, не обязательно два.

В другом случае, если, к примеру, А=0, то первое сравнение выдаст отрицательный результат(т.к. 0 не больше 10), а второе сравнение – положительный (0 явно меньше 50). И снова, т.к. одно из сравнений дает нам положительный вариант, то и все выражение выдаст True. Иными словами, при OR достаточно, чтобы положительно срабатывало одно из сравнений.

Небольшое умозаключение. В случае с OR данное логическое выражение не имеет никакого смысла, потому что любое значение переменной А приведет к положительному результату. Поэтому необходимо очень четко понимать оправданность применения того или иного логического оператора. Для наработки этого навыка необходима хорошая практика.

Комменты приветствуются, за палец вверх - отдельное спасибо. Удачи!

------------------------------

Список уроков Программирование на Python для начинающих. Базовый уровень

Следующий урок Ветвление с помощью конструкции if else elif

Предыдущий урок Основные математические функции. Библиотека math

------------------------------

Задания

1. Дано число А. Проверить истинность высказывания: «Число А является положительным».

2. Даны целых три числа А, B и С. Проверить истинность высказывания: «Число В находится между числами А и С».

3. Даны два целых числа А и В. Проверить истинность высказывания: «Только одно из чисел А и В нечетное».

4. Дано целое положительное число. Проверить истинность высказывания: «Данное число является четным двузначным».

5. Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны».

6. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую последовательность».

7. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую арифметическую прогрессию».

8. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую арифметическую или геометрическую прогрессию».

9. Дано четырехзначное число. Проверить истинность высказывания: «Данное число читается одинаково слева направо и справа налево».

10. Даны числа х, у. Проверить истинность высказывания: «Точка с координатами (х,у) лежит во второй координатной четверти».

11. Даны числа х,у, х1,у1, х2,у2. Проверить истинность высказывания: «Точка с координатами (х,у) лежит внутри прямоугольника, левая верхняя вершина которого имеет координаты (х1,у1), а правая нижняя – (х2,у2), а стороны параллельны осям координат».

12. Даны целые числа a,b,c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a,b,c является равносторонним».

13. Даны целые числа a,b,c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a,b,c является равнобедренным».

14. Даны целые числа a,b,c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a,b,c является прямоугольным».

15. Даны целые числа a,b,c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a,b,c может существовать».

16. Даны координаты поля шахматной доски х,у (целые числа, лежащие в диапазоне 1..8). Учитывая, что левая нижняя клетка доски (1,1) является черной, поверить истинность высказывания: «Клетка с координатами (х,у) является белой».

17. Даны координаты двух различных клеток шахматной доски х1,у1 и х2,у2. Проверить истинность высказывания: «Данные клетки имеют одинаковый цвет».

18. Даны координаты двух различных клеток шахматной доски х1,у1 и х2,у2. Проверить истинность высказывания: «Ладья за один ход может перейти из одной клетки в другую».

19. Даны координаты двух различных клеток шахматной доски х1,у1 и х2,у2. Проверить истинность высказывания: «Король за один ход может перейти из одной клетки в другую».

20. Даны координаты двух различных клеток шахматной доски х1,у1 и х2,у2. Проверить истинность высказывания: «Слон за один ход может перейти из одной клетки в другую».

21. Даны координаты двух различных клеток шахматной доски х1,у1 и х2,у2. Проверить истинность высказывания: «Ферзь за один ход может перейти из одной клетки в другую».

22. Даны координаты двух различных клеток шахматной доски х1,у1 и х2,у2. Проверить истинность высказывания: «Конь за один ход может перейти из одной клетки в другую».