Skip to content

Latest commit

 

History

History
271 lines (194 loc) · 9.58 KB

File metadata and controls

271 lines (194 loc) · 9.58 KB

🐍 Практика после первого блока

Рекомендуется решать задачи по порядку — от простых к более сложным.
Используй базовые конструкции Python: списки, словари, множества, кортежи, условия, циклы, функции, ввод и вывод.


📦 Базовые структуры данных

1. Простые числа

Найди все простые числа в диапазоне от 2 до 1000.

2. Частота символов в строке

Пользователь вводит строку. Создай словарь, где:

  • ключ — символ строки,
  • значение — количество его вхождений.

3. Объединение словарей

Создай два словаря и объедини их в один.

4. Удаление ключа из словаря

Удалить ключ из словаря по введённому пользователем значению ключа.


📖 Работа со строками, словами и словарями

5. Уникальные слова

Подсчитать количество уникальных слов в предложении. Сохранить их в словарь.

6. Группировка слов по длине

Принимается список слов. Вернуть словарь, где ключ — длина слова, а значение — список слов этой длины.

7. Удаление по первой букве

Удалить из словаря все элементы, ключи которых начинаются с определённого символа.

8. Книги: самый ранний год

Список словарей с данными о трёх книгах (автор, название, год). Вывести книгу с самым ранним годом издания.

9. Самый-самый по параметру

Список словарей: имя, рост, возраст, вес. Пользователь выбирает параметр, программа находит имя с максимумом по этому параметру.

10. Самый дешёвый товар

Словарь: магазин → список товаров. Найти самый дешёвый товар среди всех.

11. Самая маленькая страна

Словарь: страна → {население, площадь}. Найти страну с наименьшей площадью.

12. Уникальные символы строки

Вывести все уникальные символы в строке.

13. Уникальные слова по алфавиту

Найти все уникальные слова в тексте и вывести их по алфавиту.


🔢 Множества и кортежи

14. Удаление чётных из множества

Создай множество из чисел от 1 до 10. Удали чётные.

15. Проверка подмножества

Определи, содержатся ли все элементы одного множества в другом.

16. Минимум, максимум, среднее

Кортеж с числами → найти min, max, среднее значение.

17. Обратный порядок кортежа

Вывести элементы кортежа в обратном порядке.

18. Переворот строк в кортеже

Кортеж строк → вернуть кортеж перевёрнутых строк.

19. Пары с суммой N

Кортеж чисел, число N → найти все пары, сумма которых равна N.

20. Только чётные из кортежа

Вернуть новый кортеж только с чётными числами.

21. Самое длинное имя

Кортеж имён → вывести самое длинное.

22. Только уникальные элементы

Кортеж чисел → вернуть кортеж только уникальных элементов.


🔁 Словари и вложенные структуры

23. Преобразование списка кортежей в словарь

Список кортежей из двух строк → сделать словарь {первый: второй}.

24. Пересечение множеств

Словарь, где значения — множества. Найти их пересечение.

25. Объединение множеств в кортеже

Кортеж, содержащий множества → найти объединение всех.

26. Строка → множество → кортеж

Преобразовать строку в множество. Вернуть кортеж: (длина, количество гласных).

27. Объединение по ключам

Два словаря: ключи — числа, значения — множества. Объединить множества с одинаковыми ключами.

28. Уникальные элементы из значений

Словарь: значения — множества или кортежи. Вывести все уникальные элементы.


🧮 Функции

29. Таблица умножения

Напиши функцию multiplication_table(n), которая печатает таблицу умножения до n.

30. Поиск максимума из аргументов

Функция find_max(*args) возвращает максимальное значение из всех переданных чисел.

31. Группировка по длине через функцию

Функция group_by_length(words: list[str]) -> dict[int, list[str]].


📁 Работа с файлами

32. Сохранение словаря в файл

Пользователь вводит строку. Посчитать частоту символов и сохранить словарь в текстовый файл.

33. Чтение из файла

Файл содержит список строк. Прочитать строки, отсортировать по длине и сохранить в другой файл.

34. Уникальные слова из файла

Файл содержит текст. Найти и вывести отсортированный список уникальных слов.


🌟 Повышенная сложность

35. Уникальные словари по ключам

Список словарей + список ключей → вернуть только уникальные словари по этим ключам.

Если: list_of_dicts = [ { "name": "Vlad", "age": 30, "city": "Prague" }, { "name": "Stas", "age": 30, "city": "Prague" }, { "name": "Vlad", "age": 25, "city": "Prague" }, { "name": "Vlad", "age": 30, "city": "Berlin" } ]

  И:

  list_of_keys = ["name", "age"]

  То:    

   result = [
       {
       "name": "Vlad",
       "age": 30,
       "city": "Prague"
       },
       {
       "name": "Stas",
       "age": 30,
       "city": "Prague"
       },
       {
       "name": "Vlad",
       "age": 25,
       "city": "Prague"
       }
  ]

  Если ключи:

  list_of_keys = ["age", "city"]

  То:

  result = [
       {
       "name": "Vlad",
       "age": 30,
       "city": "Prague"
       },
       {
       "name": "Vlad",
       "age": 25,
       "city": "Prague"
       }, {
       "name": "Vlad",
       "age": 30,
       "city": "Berlin"
       }
  ]

  Если ключи:

  list_of_keys = ["name", "city"]

  то:

  result = [
      {
      "name": "Vlad",
      "age": 30,
      "city": "Prague"
      },
      {
      "name": "Stas",
      "age": 30,
      "city": "Prague"
      },
      {
      "name": "Vlad",
      "age": 30,
      "city": "Berlin"
      }
  ]

36. Банкомат с ограничением

Купюры: [1, 2, 5, 10, 20, 50, 100, 200, 500]
Сумма выдаётся минимальным количеством купюр, но не более 10 купюр одного номинала.

Допустим существуют купюры [1, 2, 5, 10, 20, 50, 100, 200, 500]

Пользователь вводит 16

    You need: 
    banknote 1, 10 times
    banknote 2, 3 times

Пользователь вводит 123 
  
    You need: 
    banknote 1, 10 times
    banknote 2, 9 times
    banknote 5, 9 times
    banknote 10, 5 times

Пользователь вводит 1234 

    You need: 
    banknote 1, 9 times
    banknote 2, 10 times
    banknote 5, 9 times
    banknote 10, 10 times
    banknote 20, 8 times
    banknote 50, 10 times
    banknote 100, 4 times