Циклы и условия: вопросы для собеседования (часть 2)

for, while, if/elif/else, break, continue — управление потоком выполнения программы. Задачи на циклы проверяют умение итерироваться по сложным структурам, обрабатывать граничные случаи и писать читаемую логику. Часто дают задачу, где нужно обойти вложенные данные или реализовать несложный алгоритм.

Коллекции и структуры данныхГенераторы списков и встроенные функцииИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных

Вопросы 610 из 20

6Считается число «успешных» статусов. Код: `cnt = 0`; цикл `for st in ['ok', 'cancelled', 'ok']:`; если `st == 'cancelled'`, выполняется `continue`, иначе `cnt += 1`. Чему равно `cnt`?
A1
B3
C0
D2
Ответ: `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`?
A2
B5
C3
D0
Ответ: Цикл `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']`?
A100
B0
C`'u2'`
D200
Ответ: `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()`) и накапливать сумму.

1234

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать в Telegram

Другие темы: Python

Коллекции и структуры данныхГенераторы списков и встроенные функцииИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных