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 условие else значение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

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

2
Задача
Модуль 1: Python Core, 3 уровень, 10 лекция
Недоступна
Тернарный оператор
Тернарный оператор
2
Задача
Модуль 1: Python Core, 3 уровень, 10 лекция
Недоступна
Таблица Пифагора
Таблица Пифагора
1
Опрос
Циклы и ветвления, 3 уровень, 10 лекция
Недоступен
Циклы и ветвления
Циклы и ветвления
Комментарии (17)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Павел Уровень 6
14 января 2026
тест лёгкий, всё четко по лекции
Swizerless (Swizerless) Уровень 5
8 января 2026
ТЗ по таблице умножения - просто идиотизм, честно. Прям классика всех ТЗ в жизни, походу. Вы нас готовите заранее к нелегкой жизни, да?))
Anonymous #6430926 Уровень 7
25 декабря 2025
Программа должна только запрашивать значение N без вывода подсказок, или использовать пустую строку. - Ну где это в ТЗ?
Иоган Уровень 5
24 сентября 2025
Я бился над задачками как лев и ... проиграл
Даниил Уровень 1
23 июня 2025
чёт сложно даж еще не воспринял пример с таблицей умножение , именно само написание кода
Anonymous #3566729 Уровень 2
20 марта 2025
Блин это все напоминает школу. У меня школа после школы, ну вы поняли. Мне значит в старших классах и универе легко будет (ого мне 8 лет)
SWK Уровень 26
12 марта 2025
А вот "правильный" ответ на вопрос 2 - это уже демонстрация неспособности авторов теста к логическому мышлению. Если "условие в else неверно" "ничего не произойдёт", а не "выполнится else", как, видимо, они думают. Else выполнится, если оно существует. Прикиньте, его может не быть! Код в else выполнится при выполнении 2х условий: 1. выражение в if неверно 2. имеется else Сообщая о том, что условие в if неверно, вы не даёте информации о том, есть вообще else или его нет. Поэтому, из вариантов "ничего не произойдёт" и "выполнится else" разумный студент обязан выбирать "ничего не произойдёт".
SWK Уровень 26
12 марта 2025
Использование else в циклах может быть особенно полезно в алгоритмах поиска, где необходимо определить, был ли поиск успешным. Например, при поиске элемента в списке, который не существует, можно использовать else для вывода сообщения о неуспехе после завершения цикла. "При поиске элемента в списке, который не существует", если я ничего не путаю, возникнет ошибка. Очевидно, имелся в виду "поиск в списке элемента, которого не существует".
SWK Уровень 26
12 марта 2025
Пример while+else непонятен. А как там цикл может "завершиться ненормально"? Print не сработает, или от n единичка не отнимется?
Дмитрий Уровень 27
29 января 2025
Первый вопрос теста озадачивает. Команды выполняются при истинном условии и с оператором if и с оператором while. Или я как-то не так понял вопрос?