Условные ветвления
if elif else
Синтаксис оператора ветвления:
if условие1: # обязательная часть
операторы1 # какие операторы относятся к if определяет отступ
elif условие2: # не обязательная часть
операторы2
elif условие3: # не обязательная часть
операторы3
... # частей elif может быть 0 или больше
else: # не обязательная часть
операторы
Никаких () или {}. Составной (блочный) оператор определяется отступами.
Не забывайте : в конце условия и после else.
pass - ничего не делать.
Пример: посчитать модуль числа (без abs)
if x < 0:
x = -x
print('Change sign')
print('Absolute value is', x)
Пример: четное или нечетное
if x%2 == 0:
print('even')
else:
print('odd')
Пример: положительное, отрицательное, ноль
if x == 0:
print('zero')
elif x < 0:
print('negative')
else:
print('positive')
if else в одну строку кода
Можно написать в одну строку
оператор1 if условие1 else оператор2
Если выражение условие1 возвращает True, то результат всего выражения оператор1. Если False, то оператор2.
Допустим, в Windows переменная offset должна быть 10, а во всех других случаях 20.
offset = 20 # значение по умолчанию
if sys.platform.startswith("win"):
offset = 10
или в одну строку:
offset = 10 if sys.platform.startswith("win") else 20
Не нужно писать : или ()
if else в выражениях
Пусть ширина 100, а если есть margine, то нужно прибавить еще 10.
width = 100 + 10 if margin else 0 # ОШИБКА!
Если margin True, то в width правильное значение 100+10. Но если False, в width будет записано число 0 (не то, что мы хотели). Нужно больше скобок! Код стал правильный и лучше читается.
width = 100 + (10 if margin else 0) # Теперь правильно
Пример: no files, 1 file, 2 files etc
print("{0} file{1}".format((count if count != 0 else "no"),
("s" if count != 1 else "")))
Операторы сравнения
Присвоить используется чаще, поэтому присвоить =, а сравнить на равенство ==
Оператор | Значение |
---|---|
x < y | x меньше y |
x <= y | x меньше или равно y |
x > y | x больше y |
x >= y | x больше или равно y |
x != y | х НЕ равен y |
x == y | х равен y |
x is y | х и y ссылаются на один и тот же объект |
x in y | х в коллекции y |
>>> a = ["xyz", 3, None] # один список
>>> b = ["xyz", 3, None] # другой список с таким же содержимым
>>> a == b # у списков одинаковое содержимое
True
>>> a is b # но это разные списки
False
>>> b = a
>>> a is b
True
Питон любит математиков:
>>> x = 12
>>> 10 < x <= 15
True
>>> x = -3
>>> -10 < x < -2
True
Логические операторы
Оператор | Значение |
---|---|
not | логическое НЕ |
and | логическое И |
or | логическое ИЛИ |
Для изменения приоритета выражений используйте скобки ().