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

Для лучшего понимания вложенных циклов вам нужно просто больше практиковаться – это самый быстрый способ освоить практически любую неочевидную вещь в программировании

undefined
2
Задача
Модуль 1: Python Core, 3 уровень, 10 лекция
Недоступна
Тернарный оператор
Тернарный оператор
undefined
2
Задача
Модуль 1: Python Core, 3 уровень, 10 лекция
Недоступна
Таблица Пифагора
Таблица Пифагора
undefined
1
Опрос
Циклы и ветвления,  3 уровень,  10 лекция
недоступен
Циклы и ветвления
Циклы и ветвления