Задачи по Python для начинающих от Tproger и GeekBrains
, отредактировано
Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке. Эта статья — часть нашего полного путеводителя по Python.
• Подборка из 22 задач охватывает основные темы Python: списки, словари, строки, функции и работу с файлами • Каждая задача имеет несколько способов решения — от простых циклов до элегантных однострочников через list comprehension и lambda • Задачи расположены от простых к более сложным: начинайте с фильтрации списков, затем переходите к словарям и алгоритмам • Встроенные функции Python (filter, sorted, map, zip) значительно сокращают код — изучайте их параллельно с решением задач • Для закрепления навыков решайте каждую задачу самостоятельно, прежде чем смотреть ответ
Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3. Прежде чем решать задачи, полезно освежить знание типов данных в Python.
Задача 1
Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89].
Выведите все элементы, которые меньше 5.
Вариант решения
Самый простой вариант, который первым приходит на ум — использовать цикл for:
Также можно воспользоваться функцией filter, которая фильтрует элементы согласно заданному условию:
И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:
print([elem for elem in a if elem < 5])
Задача 2
Даны списки:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89];
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13].
Нужно вернуть список, который состоит из элементов, общих для этих двух списков.
Вариант решения
Можем воспользоваться функцией filter:
Или списковым включением:
result = [elem for elem in a if elem in b]
А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) & set(b))
Однако в таком случае каждый элемент встретится в результирующем списке лишь один раз, т.к. множество поддерживает уникальность входящих в него элементов. Первые два решения (с фильтрацией) оставят все дубли на своих местах.
Задача 3
Отсортируйте словарь по значению в порядке возрастания и убывания.
Вариант решения
Импортируем нужный модуль и объявляем словарь:
Сортируем в порядке возрастания:
И в порядке убывания:
Задача 4
Напишите программу для слияния нескольких словарей в один.
Вариант решения
Допустим, вот наши словари:
Объединить их можно вот так:
А можно с помощью «звёздочного» синтаксиса:
result = {**dict_a, **dict_b, **dict_c}
О звёздочном синтаксисе можно прочитать в нашей статье.
Задача 5
Найдите три ключа с самыми высокими значениями в словаре my_dict = {'a':500, 'b':5874, 'c': 560,'d':400, 'e':5874, 'f': 20}.
Вариант решения
Можно воспользоваться функцией sorted:
Аналогичный результат можно получить с помощью функции nlargest из модуля heapq:
Читайте также: Всё о сортировке на Python
Задача 6
Напишите код, который переводит целое число в строку, при том что его можно применить в любой системе счисления.
Вариант решения
Второй аргумент функции int отвечает за указание основания системы счисления:
print(int('ABC', 16))
Задача 7
Нужно вывести первые n строк треугольника Паскаля. В этом треугольнике на вершине и по бокам стоят единицы, а каждое число внутри равно сумме двух расположенных над ним чисел.
Вариант решения
Задача 8
Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.
Вариант решения
Тут всё просто, достаточно сравнить строку с её обратной версией, для чего можно использовать встроенную функцию reversed:
Того же эффекта можно добиться с помощью срезов:
Задача 9
Сделайте так, чтобы число секунд отображалось в виде дни:часы:минуты:секунды.
Вариант решения
Задача 10
Вы принимаете от пользователя последовательность чисел, разделённых запятой. Составьте список и кортеж с этими числами.
Вариант решения
Задача 11
Выведите первый и последний элемент списка.
Вариант решения
Задача 12
Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла определить невозможно, выбросите исключение.
Вариант решения
Задача 13
При заданном целом числе n посчитайте n + nn + nnn.
Вариант решения
Задача 14
Напишите программу, которая выводит чётные числа из заданного списка и останавливается, если встречает число 237.
Вариант решения
Задача 15
Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втором.
Вариант решения
Задача 16
Выведите список файлов в указанной директории.
Вариант решения
Задача 17
Сложите цифры целого числа.
Вариант решения
Задача 18
Посчитайте, сколько раз символ встречается в строке.
Вариант решения
Задача 19
Поменяйте значения переменных местами.
Вариант решения
Можно написать монструозную конструкцию в стиле языка C:
Но в Python есть более удобный способ для решения этой задачи:
Задача 20
С помощью анонимной функции извлеките из списка числа, делимые на 15.
Вариант решения
Задача 21
Нужно проверить, все ли числа в последовательности уникальны.
Вариант решения
Задача 22
Напишите программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и самое длинное.
Вариант решения
Часто задаваемые вопросы
С каких задач начать изучение Python?
Начните с задач на работу со списками и простые циклы — это задачи 1, 2 и 11 из нашей подборки. Они помогут освоить базовые конструкции языка: условия, итерации и индексацию. После этого переходите к задачам на словари и строки, а затем — к алгоритмическим задачам вроде треугольника Паскаля и палиндромов.
Сколько задач нужно решить, чтобы выучить Python?
Конкретного числа нет — важнее регулярность и разнообразие тем. Решение 50–100 задач разной сложности даст уверенную базу в синтаксисе и стандартной библиотеке. Главное — не просто находить ответ, а разбираться, почему одно решение лучше другого, и пробовать разные подходы к каждой задаче.
Где ещё можно найти задачи по Python для начинающих?
Помимо нашей подборки, задачи для практики есть на LeetCode, Codewars и HackerRank — там можно решать прямо в браузере с автоматической проверкой. Для русскоязычных разработчиков также подойдут acmp.ru и Stepik. Рекомендуем комбинировать платформы: на одних решать алгоритмические задачи, на других — практиковать работу с библиотеками.
Нужно ли знать математику для решения задач на Python?
Для большинства задач из этой подборки достаточно школьной арифметики. Понадобится знание чётности, деления с остатком и базовой логики. Продвинутая математика нужна только для специализированных областей — машинного обучения, криптографии или научных вычислений. Начинающим важнее понять структуры данных и алгоритмы, чем углубляться в математику. Что учить после базовых задач — в нашей дорожной карте по Python.
Хотите вырасти от новичка до профессионала? Факультет Python-разработки GeekUniversity даёт год опыта для вашего резюме. Обучайтесь на практических заданиях, по-настоящему освойте Python и станьте ближе к профессии мечты.
Узнать больше