Условные ветвления

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 логическое ИЛИ

Для изменения приоритета выражений используйте скобки ().

results matching ""

    No results matching ""