JavaRush /Курси /Модуль 1: Python Core /Ще трохи про цикли та if-и

Ще трохи про цикли та if-и

Модуль 1: Python Core
Рівень 3 , Лекція 10
Відкрита

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

Для кращого розуміння вкладених циклів вам потрібно просто більше практикуватися – це найшвидший спосіб опанувати практично будь-яку неочевидну річ у програмуванні

1
Опитування
Цикли та розгалуження, рівень 3, лекція 10
Недоступний
Цикли та розгалуження
Цикли та розгалуження
Коментарі (3)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Oleksandr Рівень 21
11 березня 2025
Загальний вигляд тернарного запису: змінна = значення1 if умова значення2 Де в загальному вигляді згадано про ELSE ? (воно ж там має бути, чи не так ?)
Semen Рівень 21
4 червня 2025
Очевидно, випадково пропустили...Хоча, якщо вже спрощувати if..else до тернарного оператора, то else, там, і не потрібне, як на мене.
Yurii Рівень 8
3 січня 2026
Спочаткуу також збило з правильного рішення цей запис) Подумав, що розділення між значеннями (мов в excel крапка з комою, хаха), зробить else не потрібним і скоротить код. Але він потрібний. Або я неправильно зрозумів, як без нього обійтися.