Урок 1 из 0
В процессе

2. Условный оператор

Аннотация

     Во втором уроке мы впервые познакомимся с одной из фундаментально важных тем в программировании – условным оператором. Он позволяет организовать ветвление в вашей программе (выполнение одной ветки кода в зависимости от условия).

     Условный оператор

     Условный оператор используется, когда некая часть программы должна быть выполнена, только если верно какое-либо условие. Для записи условного оператора используются ключевые слова if и else («если», «иначе»), двоеточие и  отступ в четыре пробела.

if условие:

Действия, если условие верно

else:

Действия, если условие неверно

PEP 8

     Отступ в четыре пробела принят в сообществе Python (PEP 8). При этом программа может работать и при других вариантах, но читать ее будет неудобно. Пробелы — самый предпочтительный метод отступов.

     Табуляция должна использоваться только для поддержки кода, написанного с отступами с помощью табуляции.

     Python 3 запрещает смешивание табуляции и пробелов в отступах.

Рассмотрим пример:

print(‘Введите пароль:’)

password = input()

if password == ‘qwerty’:

print(‘Доступ открыт.’)

else:

print(‘Ошибка, доступ закрыт!’)

     Обратите внимание: в начале условного оператора if выполняется сравнение, а не присваивание. Разница вот в чем.

Сравнение

     Сравнение — это проверка, которая не меняет значение переменной (в сравнении может вообще не быть переменных), а присваивание — команда, которая меняет значение переменной.

     Для сравнения нужно использовать двойной знак равенства: ==.

     Также заметьте, что после else никогда не пишется никакого условия.

     Другой пример:

print(‘Представься, друг!’)

name = input()

if name == ‘Антон’:

print(‘Привет, Антон!’)

else:

print(‘Приветик.’)

     В качестве условия можно использовать и другие операции отношения:

< меньше

> больше

<= меньше или равно

>= больше или равно

== равно

!= не равно

PEP 8

     Все операции отношения оформляются с помощью симметричных пробелов.

Правильно:

if bird == “Тук-тук”:

Неправильно:

if bird==”Тук-тук”:

     Объекты любой однородной группы можно сравнивать между собой. Подумайте над тем, как можно сравнивать, например, строки.

Сложное условие. Логические операции

     Иногда в условном операторе нужно задать сложное условие. Для этого можно использовать логические операции and («и»), or («или») и not («не»).

     Чтобы задать одновременное выполнение двух условий, используем and («и»), если достаточно выполнения одного из двух вариантов (или обоих сразу) — используем or («или»), а если нужно убрать какой-то вариант — not («не»).

     Приоритет выполнения операций:

  1. not
  2. and
  3. or

     Если нужно изменить приоритет операций или вы забыли правила, используйте скобки.

     Например, вот так можно проверить, что оба условия выполнены:

print(‘Как называются первая и последняя буквы греческого алфавита?’)

greek_letter_1 = input()

greek_letter_2 = input()

if greek_letter_1 == ‘альфа’ and greek_letter_2 == ‘омега’:

print(‘Верно.’)

else:

print(‘Неверно.’)

     Ниже еще несколько примеров.

print(‘Как греки или римляне называли главу своего пантеона – бога грома?’)

ancient_god = input()

if ancient_god == ‘Зевс’ or ancient_god == ‘Юпитер’:

print(‘Верно.’)

else:

print(‘Неверно.’)

PEP 8

     По стандарту PEP 8 длина строки должна быть ограничена максимум 79 символами.

     Есть несколько способов переноса длинных строк.

  • Использование подразумеваемых продолжений Python внутри круглых, квадратных и фигурных скобок: длинные строки могут быть разбиты на несколько строк, заключенных в скобки.
  • Использование символа ’\’ (обратный слеш, или бэкслеш) для обозначения места разрыва строки.

     Если после перенесенной строки идет один или несколько вложенных операторов (например, мы переносим строку с условием в операторе if), отступ у перенесенной части должен быть на четыре пробела больше, чем у вложенного оператора.

     Рассмотрим ещё один пример.

print(‘Введите любые два слова, но это не должны быть “белый” и “медведь” разом.’)

word1 = input()

word2 = input()

if not (word1 == ‘белый’ and word2 == ‘медведь’):

print(‘Верно.’)

else:

print(‘Неверно.’)

     Вложенные условия

     Блок кода

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

     Блоки кода в Python очень гибко устроены: внутри них можно писать любой другой код, в том числе условные операторы. Среди команд, которые выполняются, если условие if истинно («внутри if») или ложно («внутри else»), могут быть и другие условные операторы. Тогда команды, которые выполняются внутри этого внутреннего if или else, записываются с дополнительным отступом.

     Изучите пример ниже. elif — это короткая запись для «else: if». Если не пользоваться короткой записью, if пришлось бы писать на отдельной строчке и с отступом (а все, что внутри этого if, — с дополнительным отступом). Это не очень удобно, и elif избавляет от такой необходимости.

     А более простой вариант этой программы теперь попробуйте написать самостоятельно.

Операции над строками

     Во всех примерах, которые мы рассматривали, переменные хранили строки. Мы вводили, выводили и хранили строки. Кроме уже описанных действий, строки еще можно складывать.

Давайте попробуем:

x = ’10’

y = ’20’

z = x + y

print(z)

     В данной программе мы задали переменным x и y значение, переменной z присвоили значение результата сложения x и y.

     Результатом выполнения программы будет строка 1020

PEP 8

     И опять немного рекомендаций по оформлению (PEP 8): ставьте пробелы вокруг знаков операций (*, +, – и т. д.)

Правильно:

z = x + y

Неправильно:

z = x+y

Конкатенация

     Операция сложения для строк выполняет конкатенацию двух строк, то есть склеивает их содержимое вместе.

     Например: операция «При» + «вет» в результате даст строку «Привет».

     Обратите внимание: запись: x + y = z недопустима. Оператор присваивания ожидает слева переменную, которой надо присвоить значение, а в правой части находится значение или выражение, которое надо сначала вычислить, а затем присвоить.

     Мы могли сократить нашу программу и написать в таком виде:

x = ’10’

y = ’20’

print(x + y)

     Результат будет такой же, проверьте. Оператор print() сначала вычислил значение выражения x + y, а потом вывел на экран полученное значение.

     А еще такой результат можно получить вот таким образом:

print(’10’ + ’20’)

Дублирование

     Для строк также можно выполнять умножение. Умножать можно строку на число или число на строку. Операция называется дублирование. В результате нее начальная строка будет повторена заданное количество раз.

     Например: 3 * “20” то же, что и “20” * 3 и, результат будет 202020 и в том, и в другом случае.

     Примеры использования:

x = ’10’

y = ’20’

print(x * 2 + y * 3)

     Что будет на экране после запуска такой программы?

Команда in

     Команда in позволяет проверить, что одна строка находится внутри другой.

     Например: строка «на» находится внутри строки «сложная задача».

     В таком случае обычно говорят, что одна строка является подстрокой для другой.

text = input()

if ‘хорош’ in text and ‘плох’ not in text:

print(‘Текст имеет положительную эмоциональную окраску.’)

elif ‘плох’ in text and ‘хорош’ not in text:

print(‘Текст имеет отрицательную эмоциональную окраску.’)

else:

print(‘Текст имеет нейтральную или смешанную эмоциональную окраску.’)

     Первое условие окажется истинным, например, для строк «все хорошо» и «какой хороший день», но не для «ВсЕ ХоРоШо» и не для «что-то хорошо, а что-то и плохо». Аналогично второе условие окажется истинным для строк «все плохо», «плохое настроение» и т. д.