Разминочные упражнения: циклы и коллекции¶
Короткие задачи для отработки базового синтаксиса перед лабораторными и DSA-лабами. Цель — набить руку на for/while, индексации, накоплении результата и работе со списками и словарями.
Решения лежат в репозитории: src/python/tasks/loops/ (task1.py–task7.py). В каждом файле — условие в докстринге и эталонная реализация в виде чистой функции, а интерактивный ввод-вывод вынесен в блок if __name__ == "__main__". Каждая функция покрыта тестами в tests/tasks/loops/. Чтобы потренироваться самостоятельно — сначала решите задачу, затем сверьтесь с эталоном.
Задачи¶
- Пара соседних элементов с минимальной суммой (
task1.py) — дан список из шести случайных чисел; найдите пару соседних элементов с минимальной суммой, выведите их индексы и сумму. range→list(task2.py) — создайте список с элементами от 0 до 100 с шагом 17 черезlist(range(...)).- Подсчёт отрицательных элементов (
task3.py) — посчитайте количество отрицательных чисел в списке. - Длины слов (
task4.py) — соберите пять слов с клавиатуры и сформируйте второй список с их длинами. - Проценты по вкладу (
task5.py) — рассчитайте сумму вклада с капитализацией процентов по годам в цикле. - Модуль шифрации/дешифрации (
task6.py) — реализуйтеencrypt/decryptтак, чтобыdecrypt(encrypt(s)) == s. - Методы словаря
setdefaultиupdate(task7.py) — разберитесь и покажите на примерах поведение этих методов.
Как решать¶
git clone https://github.com/jtprogru/dsa-for-ops.git
cd dsa-for-ops/src/python/tasks/loops
python task1.py
Открывайте файл, читайте условие в докстринге, попробуйте написать функцию сами, затем сверьтесь с эталоном и запустите тесты: uv run pytest tests/tasks/loops. Эти задачи относятся к Лекции 3. Коллекции и циклам из Лекции 2.