Циклы и условия: вопросы для собеседования (часть 2)
for, while, if/elif/else, break, continue — управление потоком выполнения программы. Задачи на циклы проверяют умение итерироваться по сложным структурам, обрабатывать граничные случаи и писать читаемую логику. Часто дают задачу, где нужно обойти вложенные данные или реализовать несложный алгоритм.
Вопросы 6–10 из 20
6Считается число «успешных» статусов. Код: `cnt = 0`; цикл `for st in ['ok', 'cancelled', 'ok']:`; если `st == 'cancelled'`, выполняется `continue`, иначе `cnt += 1`. Чему равно `cnt`?
Ответ: `continue` пропускает текущую итерацию и переходит к следующей.
На втором элементе `'cancelled'` сработает `continue`, поэтому `cnt` не увеличится. Для двух значений `'ok'` счётчик увеличится, итоговое значение `cnt` будет 2.
7В цепочке `if`/`elif`/`else` условия проверяются сверху вниз. Если сначала стоит `if amount > 100`, а затем `elif amount > 200`, то при `amount = 250` какая ветка выполнится?
AВетка `if`
BВетка `elif`
CВетка `else`
DБудет ошибка
Ответ: Срабатывает первая истинная проверка; если `if` прошёл, то `elif` и `else` не выполняются.
При `amount = 250` условие `amount > 100` истинно, поэтому выполняется ветка `if`, а до `elif amount > 200` интерпретатор уже не дойдёт. Если нужно, чтобы значения больше 200 попадали в отдельный сегмент, проверку `amount > 200` ставят выше, чем `amount > 100`.
8Чему равен `cnt` после кода: `cnt = 0`; `for ch in 'A12B3':`; если `ch.isdigit()` истинно, то `cnt += 1`?
Ответ: Цикл `for` по строке идёт по символам, а `if` помогает отфильтровать нужные символы.
В строке `'A12B3'` цифры — `1`, `2`, `3`. Для них `ch.isdigit()` вернёт истину, поэтому `cnt` увеличится 3 раза.
9Есть списки пользователей и трат: `users = ['u1', 'u2']` и `spends = [100, 200]`. После `d = {}`, в цикле `for u, s in zip(users, spends):` выполняется `d[u] = s`. Чему равно `d['u2']`?
Ответ: `zip()` создаёт пары по позициям, поэтому `'u2'` сопоставится со значением 200.
Итерация по `zip(users, spends)` выдаёт пары (`'u1'`, 100) и (`'u2'`, 200). Эти пары записываются в словарь, поэтому по ключу `'u2'` будет лежать 200.
10Есть словарь выручки по странам `revenue_by_country = {'RU': 100, 'KZ': 50}`. Как корректно посчитать сумму значений через цикл `for`?
A`total = 0; for x in revenue_by_country: total += x`
B`total = 0; for v in revenue_by_country.values(): total += v`
C`total = sum(revenue_by_country)`
D`total = 0; for k, v in revenue_by_country: total += v`
Ответ: Чтобы суммировать значения словаря, итерируйтесь по `revenue_by_country.values()` или по парам из `revenue_by_country.items()`.
В `for x in revenue_by_country` переменная `x` принимает ключи (`'RU'`, `'KZ'`), поэтому попытка складывать их с числом приведёт к ошибке. Правильно проходить по значениям через `revenue_by_country.values()` (или по `(key, value)` через `revenue_by_country.items()`) и накапливать сумму.
Хотите тренировать интерактивно?
В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать в Telegram