if/elif/else¶
Конструкція if/elif/else
дозволяє робити розгалуження під час програми.
Програма йде у гілку під час виконання певної умови.
У цій конструкції тільки if є обов'язковим, elif та else опціональні:
- Перевірка if завжди йде першою.
- Після оператора if має бути якась умова: якщо ця умова виконується, дії в блоці if виконуються.
- За допомогою elif можна зробити кілька розгалужень, тобто перевіряти вхідні дані на різні умови.
- Блоків elif може бути багато.
- Блок else виконується у тому випадку, якщо жодна з умов if або elif не була істинною.
Приклад конструкції:
flowchart TD
a["a = ..."] -->c{if a > 10};
c -->|True|b["a більше 10"];
c -->|False|e["a менше чи дорівнює 10"];
b --> q[Кінець];
e --> q;
Приклад конструкції:
a = 9
if a == 10:
print("a дорівнює 10")
elif a < 10:
print("a менше 10")
else:
print("a більше 10")
Вивід:
Умови¶
Конструкція if використовує умови: після if і elif завжди пишеться логічний вираз. Блоки if/elif виконуються тільки коли логічний вираз істинний, тому перше з чим треба розібратися - це те, що є істинним, а що хибним в Python.
True та False¶
У Python, крім очевидних значень True і False, усі інші об'єкти також мають хибне або істинне значення:
-
істинне:
- будь-яке ненульове число
- будь-який непорожній рядок
- будь-який непорожній об'єкт
-
хибне:
- 0
- None
- порожній рядок
- порожній об'єкт (список, словник, множина тощо)
Наприклад, оскільки порожній список є хибним, ви можете перевірити, чи порожній список, так:
In [12]: list_to_test = [1, 2, 3]
In [13]: if list_to_test:
....: print("У списку є об'єкти")
....:
У списку є об'єкти
Той самий результат можна отримати трохи інакше:
Оператори порівняння¶
Оператори порівняння, які можна використовувати в умовах:
In [3]: 5 > 6
Out[3]: False
In [4]: 5 > 2
Out[4]: True
In [5]: 5 < 2
Out[5]: False
In [6]: 5 == 2
Out[6]: False
In [7]: 5 == 5
Out[7]: True
In [8]: 5 >= 5
Out[8]: True
In [9]: 5 <= 10
Out[9]: True
In [10]: 8 != 10
Out[10]: True
Приклад використання операторів порівняння:
In [1]: a = 9
In [2]: if a == 10:
...: print("a дорівнює 10")
...: elif a < 10:
...: print("a менше 10")
...: else:
...: print("a більше 10")
...:
a менше 10
Оператор in¶
Оператор in
дозволяє виконувати перевірку на наявність елемента у
послідовності (наприклад, елемента у списку або підрядка в рядку):
In [8]: "Fast" in "FastEthernet"
Out[8]: True
In [9]: "Gigabit" in "FastEthernet"
Out[9]: False
In [10]: vlan = [10, 20, 30, 40]
In [11]: 10 in vlan
Out[11]: True
In [12]: 50 in vlan
Out[12]: False
При використанні зі словниками in
перевіряє ключі словника:
r1 = {
'ios': '15.4',
'ip': '10.255.0.1',
'hostname': 'london_r1',
'location': '21 New Globe Walk',
'model': '4451',
'vendor': 'Cisco'
}
In [16]: 'ios' in r1
Out[16]: True
In [17]: '4451' in r1
Out[17]: False
Оператори and, or, not¶
В умовах можуть також використовуватись логічні оператори and
, or
, not
:
r1 = {
'ios': '15.4',
'ip': '10.255.0.1',
'hostname': 'london_r1',
'location': '21 New Globe Walk',
'model': '4451',
'vendor': 'Cisco'
}
In [18]: vlan = [10, 20, 30, 40]
In [19]: 'ios' in r1 and 10 in vlan
Out[19]: True
In [20]: '4451' in r1 and 10 in vlan
Out[20]: False
In [21]: '4451' in r1 or 10 in vlan
Out[21]: True
In [22]: not '4451' in r1
Out[22]: True
In [23]: '4451' not in r1
Out[23]: True
Оператор and¶
У Python оператор and повертає не булеве значення, а значення одного з операндів.
Якщо обидва операнди істинні, результатом виразу буде останнє значення:
In [24]: 'string1' and 'string2'
Out[24]: 'string2'
In [25]: 'string1' and 'string2' and 'string3'
Out[25]: 'string3'
Якщо один із операндів є хибним, результатом виразу буде перше хибне значення:
Оператор or¶
Оператор or, як і оператор and, повертає значення одного з операндів.
Під час обчислення операндів повертається перший істинний операнд:
In [28]: '' or 'string1'
Out[28]: 'string1'
In [29]: '' or [] or 'string1'
Out[29]: 'string1'
In [30]: 'string1' or 'string2'
Out[30]: 'string1'
Якщо всі значення хибні, повертається останнє значення:
Важливою особливістю оператора or
є те, що операнди, які стоять після
істинного, не оцінюються.
Приклад використання конструкції if/elif/else¶
Приклад коду, який перевіряє довжину пароля та чи містить пароль ім'я користувача:
username = input("Введіть ім'я користувача: ")
password = input("Введіть пароль: ")
if len(password) < 8:
print("Пароль надто короткий")
elif username in password:
print("Пароль містить ім'я користувача")
else:
print(f"Пароль для користувача {username} встановлено")
Перевірка скрипту:
$ python check_password.py
Введіть ім'я користувача: nata
Введіть пароль: nata1234
Пароль містить ім'я користувача
$ python check_password.py
Введіть ім'я користувача: nata
Введіть пароль: 123nata123
Пароль містить ім'я користувача
$ python check_password.py
Введіть ім'я користувача: nata
Введіть пароль: 1234
Пароль надто короткий
$ python check_password.py
Введіть ім'я користувача: nata
Введіть пароль: 123456789
Пароль для користувача nata встановлено