Перейти к содержанию

Разминочные упражнения: циклы и коллекции

Короткие задачи для отработки базового синтаксиса перед лабораторными и DSA-лабами. Цель — набить руку на for/while, индексации, накоплении результата и работе со списками и словарями.

Решения лежат в репозитории: src/python/tasks/loops/ (task1.pytask7.py). В каждом файле — условие в докстринге и эталонная реализация в виде чистой функции, а интерактивный ввод-вывод вынесен в блок if __name__ == "__main__". Каждая функция покрыта тестами в tests/tasks/loops/. Чтобы потренироваться самостоятельно — сначала решите задачу, затем сверьтесь с эталоном.

Задачи

  1. Пара соседних элементов с минимальной суммой (task1.py) — дан список из шести случайных чисел; найдите пару соседних элементов с минимальной суммой, выведите их индексы и сумму.
  2. rangelist (task2.py) — создайте список с элементами от 0 до 100 с шагом 17 через list(range(...)).
  3. Подсчёт отрицательных элементов (task3.py) — посчитайте количество отрицательных чисел в списке.
  4. Длины слов (task4.py) — соберите пять слов с клавиатуры и сформируйте второй список с их длинами.
  5. Проценты по вкладу (task5.py) — рассчитайте сумму вклада с капитализацией процентов по годам в цикле.
  6. Модуль шифрации/дешифрации (task6.py) — реализуйте encrypt/decrypt так, чтобы decrypt(encrypt(s)) == s.
  7. Методы словаря 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.