Занятие № 2. Решение задач с использованием условного оператора
Цель: изучить синтаксис условного оператора; научиться применять оператор if-elif-else; уметь применять простые и составные условия.
Теория
Логические значения и выражения
В Python для хранения логических значений используется тип bool. Существует только два литерала для логических значений - True (истина) и False (ложь). Результатом вычисления логического выражения является одно из двух логических значений.
Операторы сравнения используются, чтобы узнать равны или не равны два логических выражения, какое из них больше или меньше.
| Оператор | Название | Пример |
|---|---|---|
< |
Меньше | 6 < 10 – True; 52 < 5 – False. |
> |
Больше | 2 > 9 – False |
<= |
Меньше или равно | 5 <= 5– True; 5 <= 6– True. |
>= |
Больше или равно | 2 >= 3– False; 2 >= 2 – True. |
== |
Равно | "python" == "ruby" – False |
!= |
Не равно | 42 != 1 - True |
Что из перечисленного является логическим выражением?
Логические операторы
Для комбинирования логических выражений можно использовать логические операторы - not, and и or.
Значение следующего выражения True, если x больше 0 и меньше 10:
Следующие выражение истинно, если x делится на 2 или делится на 3:
Результат следующего логического выражения будет не истиной, если x > y и не ложью в обратном случае. Иными словами результат логического выражения инвертируется:
Попробуйте поменять значения переменных x и y в примерах, чтобы получить разные значения логических выражений.
Какие из логических выражений помогут определить, что значение переменной x лежит между 0 и 5?
Приоритет операторов
Арифметические операторы имеют больший приоритет чем операторы сравнения и логические операторы. Затем вычисляется значение выражений с операторами сравнения. Самый низкий приоритет у логических операторов. Например в выражении x * 5 >= 10 and y - 6 <= 20 в первую очередь выполнятся операторы * и -, потом произойдёт сравнение (операторы >= и <=) и в самом конце выполниться логический оператор and. В этом примере, если x = 1 a y = 7, то значение всего выражения будет равно
.
Инструкция “Ветвление”
Полная форма
Общая форма записи полной формы инструкции ветвления:
if <логическое выражение>:
# если логическое выражение == True
<блок инструкций 1>
else:
# если логическое выражение == False
<блок инструкций 2>Обратите внимание, что после : набор инструкций записывается с отступом. С помощью отступа в Python обозначаются блоки инструкций. Конец строки считается концом инструкции, конец отступа считается концом блока инструкций. Рисунок 1 содержит диаграмму работы полной формы ветвления.
Обратите внимание на правила оформления блоков инструкций. Это важно, так как в Python вложенность инструкций определяется именно отступами.
- Блок связанных инструкций должен иметь одинаковый отступ.
- Размер отступа может быть произвольным (рекомендовано 4 пробела).
- Для создания отступов можно использовать пробелы или табуляцию.
- Нельзя смешивать пробелы и символы табуляции при оформлении одного блока.
В следующем примере определим чётность или нечётность значения в переменной x:
Сокращённая форма
Ветвление можно записать в сокращённой форме без оператора else:
Попробуйте поменять значение x на отрицательное число и запустить программу ещё раз.
Иногда бывает необходимо обозначить пустой блок инструкций, чтобы реализовать его позже. В таком случае пригодится инструкция pass (пропустить):
Запись без инструкции pass вызовет синтаксическую ошибку:
Каскадное ветвление
Инструкции ветвления могут быть вложены друг в друга.
Рисунок 2 содержит диаграмму с ходом выполнения алгоритма.
В Python такую последовательность условий можно записать иначе с помощью инструкции elif:
В обоих случаях будет выполнена только одна из ветвей алгоритма.
К примеру следующий код:
При x = 3, y = 5 и z = 2 выведет на экран цифру
.
Примеры
Познакомьтесь с готовыми решениями задач. Ответьте на вопросы после кода решения каждой задачи.
Пример № 1 (ex01.py)
Напишите программу, которая бы получала на вход температуру воздуха из прогноза погоды и выводила на экран краткую характеристику. Если температура меньше 5 градусов вывести сообщение «Холодно, оденьтесь теплее»; если температура больше либо равна 5, но меньше 20 градусов вывести сообщение «На улице прохладно»; если температура больше либо равна 20 градусов – «На улице тепло».
В строке номер
пользователь вводит сегодняшнюю температуру воздуха. В строке номер
используется логический оператор
. Значение всего логического выражения будет равно True, если значения
логических выражений будет равно True.
В программе встречается только
форма инструкции if.
Пример № 2 (ex02.py)
Напишите программу вычисляющую корни квадратного уравнения по заданным коэффициентам a, b и c. В случае если корень один – вывести на экран один корень. Если корней нет – вывести соответствующее сообщение.
В программе используется
форма записи инструкции if.
В строке проверяется, равен ли дискриминант нулю. В этом случае значение корня уравнения сохраняется в переменную с именем . Инструкции после оператора выполнятся, если уравнение не имеет корней.
Задания для самостоятельной работы
Задание № 1 (sam01.py)
Дано целое число. Если оно является положительным, то прибавьте к нему 1; в противном случае оставьте значение числа без изменений. Выведите полученное число на экран.
Задание № 2 (sam02.py)
Даны две переменные A и B. Если их значения равны, то присвоить каждой переменной сумму этих значений, а если не равны, то присвоить переменным нулевые значения. Значения переменных A и B вводятся с клавиатуры. Выведите новые значения переменных на экран.
Задание № 3 (sam03.py)
С клавиатуры вводится номер месяца. Нумерация месяцев начинается с 1. Выведите на экран пору года к которой принадлежит этот месяц - зима, весна, лето или осень.
Задание № 4 (sam04.py)
Индекс массы тела – это величина, которая позволяет оценить степень соответствия массы человека и его роста и рассчитывается по формуле
где m – масса тела в килограммах, h – рост в метрах. Нормой считается значение индекса в диапазоне от 18 до 25. Напишите программу рассчитывающую индекс массы тела по введённым данным и выводящее сообщение в трёх случаях: значение индекса в норме, индекс меньше нормы, индекс больше нормы.
Задание № 5 (sam05.py)
Високосным является год, значение которого делится на 4, но при этом не делится на 100, либо делится на 400. Напишите программу, которая определяет, является ли введённый год високосным или нет, и выводит соответствующее сообщение.