Нужно задать значение скидки без лишней вложенности: если country == 'RU' и is_premium истина → 10%; если country == 'RU' и не premium → 0; иначе → 5%. Какой вариант логики if/elif/else корректен?

Aif country == 'RU' and is_premium: → 10%; elif country == 'RU': → 0; else: → 5%
Bif country == 'RU': → 0; elif country == 'RU' and is_premium: → 10%; else: → 5%
Cif country != 'RU': → 5%; elif is_premium: → 0; else: → 10%
Dif country == 'RU' or is_premium: → 10%; elif country == 'RU': → 0; else: → 5%
Правильный ответ. Сначала ставьте более специфичное условие (country и is_premium вместе), затем более общее (country == 'RU').

Разбор

Когда условия пересекаются, более специфичное должно идти раньше. Если поставить country == 'RU' первым, премиальные пользователи из России попадут в эту ветку и до проверки is_premium дело не дойдёт. Поэтому начинаем с комбинации country == 'RU' and is_premium, затем обрабатываем оставшийся случай country == 'RU', и в конце общий else. Вариант с or объединяет несвязанные случаи, а перестановка ломает логику.

Проверь себя · 1/3разбор после ответа
Какой фрагмент while вероятнее всего приведёт к бесконечному циклу, если список events непустой?
Тренировать Python в Telegram

Ещё вопросы по теме «Циклы и условия»