11.1 Тернарний оператор
У Python існує так званий тернарний оператор, який по суті представляє видозмінений оператор if else.
Уявімо, що у вас є код:
if a < b:
min = a
else:
min = b
Щоб такий простий код не займав багато місця, для нього придумали компактний запис. Він виглядатиме так:
min = a if a < b else b
Загальний вигляд тернарного оператора можна описати формою:
змінна = значення1 if умова значення2
Якщо умова істинна, то змінній присвоюється значення1, якщо хибна — значення2.
Зверніть увагу, що двокрапка після умови тут не ставиться.
11.2 Оператор else у циклах
У Python, оператор else часто асоціюється з умовними операторами if. Однак його використання не обмежується цим, і else також можна застосовувати у циклах for та while.
Цей неочевидний аспект else у контексті циклів може збивати з пантелику новачків, але він відкриває цікаві можливості для керування потоком виконання програми.
Як працює else у циклах
У циклах else виконується після завершення роботи циклу, але лише якщо цикл завершився нормально (тобто не був перерваний оператором break). Ця особливість робить else корисним для сценаріїв, де потрібно перевірити, чи був цикл перерваний достроково.
Приклад використання у циклі for:
for i in range(3):
password = input('Введіть пароль: ')
if password == 'секрет':
print('Пароль прийнято.')
break
else:
print('Немає спроб введення або всі введені паролі невірні.')
Тут else спрацьовує, якщо користувач тричі ввів невірний пароль. Якщо користувач вводить правильний пароль, цикл переривається break, і блок else не виконується.
Приклад використання у циклі while:
n = 5
while n > 0:
print(n)
n -= 1
else:
print('Цикл завершився нормально.')
У цьому випадку else виконується після того, як цикл завершився природним чином, оскільки умова стала хибною.
Практичне значення
Використання else у циклах може бути особливо корисним в алгоритмах пошуку, де необхідно визначити, чи був пошук успішним. Наприклад, при пошуку елемента у списку, якого не існує, можна використати else для виводу повідомлення про невдачу після завершення циклу.
Використовуйте else у циклах ясно і послідовно, щоб не заплутати тих, хто буде читати ваш код. Пам'ятайте, що else в циклах не завжди інтуїтивно зрозумілий, тому варто додавати коментарі або обирати інші способи реалізації логіки, якщо це робить код більш зрозумілим.
11.3 Вкладені цикли
У Python можна писати дуже складну логіку дуже компактно. Для деяких випадків вам знадобляться вкладені if-и, а для інших – вкладені цикли. Ось про деякі нюанси їх роботи ми зараз і поговоримо:
Вкладений цикл означає наявність одного циклу всередині іншого. Це дозволяє, наприклад, обробляти багатовимірні масиви, списки списків або інші вкладені структури даних.
Вкладені цикли складаються з зовнішнього циклу і одного чи кількох внутрішніх циклів. Щоразу, коли зовнішній цикл виконує одну ітерацію, внутрішній цикл виконується повністю:
for i in range(3): # Зовнішній цикл
for j in range(3): # Внутрішній цикл
print(f"({i}, {j})")
З точки зору зовнішнього циклу, внутрішній цикл і його вміст – це просто блок команд, які виконуються для кожної ітерації зовнішнього циклу. Зовнішньому циклу взагалі байдуже, що у нього всередині, скільки там циклів і так далі. Він просто виконує свій внутрішній блок команд кожного разу для змінної з свого списку.
Давайте виведемо на екран таблицю множення – вкладені цикли ідеально підійдуть для цього завдання. Створення таблиці множення за допомогою вкладених циклів, де один цикл відповідає за множник, а інший — за множане:
n = 5
for i in range(1, n + 1):
for j in range(1, n + 1):
print(f"{i} * {j} = {i * j}", end='\t')
print() # Перехід на новий рядок для наступного множника
Цей приклад виведе на екран таблицю:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5
2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
Для кращого розуміння вкладених циклів вам потрібно просто більше практикуватися – це найшвидший спосіб опанувати практично будь-яку неочевидну річ у програмуванні
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ