Python
Сборник задач по программированию на Python
Сборник помогает повторить базовые приемы программирования на Python: условия, циклы, строки, списки, функции и словари
Работайте с подборкой руками: сначала попробуйте написать решение самостоятельно, затем сравните с примером и обязательно измените входные данные. Так задача превращается в навык, а не в просмотр готового ответа
Как заниматься
Для каждой задачи выпишите входные данные, ожидаемый результат и одно главное действие. Если решение не идет, начните с переменных и одного print, а потом добавляйте условие, цикл или функцию
После решения проверьте обычный случай, пустой случай и один неудобный вариант: ноль, отрицательное число, повтор, пробелы в строке или список из одного элемента
Задачи с решениями
Задача 1. Сумма двух чисел
Прочитайте два числа и выведите сумму
Решение:
a = int(input("Первое число: "))
b = int(input("Второе число: "))
print(a + b)
Проверка: проверьте 2 и 3, затем -5 и 10
Задача 2. Четное число
Определите, является ли число четным
Решение:
number = int(input("Число: "))
if number % 2 == 0:
print("четное")
else:
print("нечетное")
Проверка: проверьте 0, 7 и 10
Задача 3. Сумма от 1 до N
Посчитайте сумму чисел от 1 до введенного N
Решение:
n = int(input("N: "))
total = 0
for number in range(1, n + 1):
total += number
print(total)
Проверка: для N = 5 результат должен быть 15
Задача 4. Разворот строки
Разверните введенную строку
Решение:
text = input("Текст: ")
print(text[::-1])
Проверка: для python результат должен быть nohtyp
Задача 5. Положительные числа
Из списка оставьте только положительные числа
Решение:
numbers = [-3, 0, 5, 8, -1]
positive = []
for number in numbers:
if number > 0:
positive.append(number)
print(positive)
Проверка: результат должен быть [5, 8]
Задача 6. Подсчет слов
Посчитайте количество слов в строке
Решение:
text = "python is a good start"
words = text.split()
print(len(words))
Проверка: проверьте строку с несколькими пробелами
Задача 7. Функция скидки
Напишите функцию, которая возвращает цену со скидкой
Решение:
def apply_discount(price, percent):
return price - price * percent / 100
print(apply_discount(1000, 15))
Проверка: для 1000 и 15 результат должен быть 850
Задача 8. Частотный словарь
Посчитайте, сколько раз встречается каждое слово
Решение:
words = ["python", "sql", "python", "html"]
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
print(freq)
Проверка: добавьте повтор sql и проверьте счетчик
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как проверять свои решения
Закройте готовый ответ и перепишите решение по памяти. Если приходится постоянно подглядывать, уменьшите задачу: оставьте два элемента, одно условие и один вывод
Хороший признак — вы можете объяснить, какие данные входят в программу, где они меняются и почему результат именно такой
Частые ошибки новичков
- читать решение, но не запускать его
- проверять только один красивый пример
- забывать преобразовать
inputв число - менять список во время перебора без необходимости
- писать слишком общие имена переменных
- путать вывод через
printи возврат черезreturn
Дополнительные задачи
Задача 9. Второй максимум
Найдите второе по величине число в списке
numbers = [5, 1, 9, 9, 3]
unique_numbers = sorted(set(numbers), reverse=True)
if len(unique_numbers) >= 2:
print(unique_numbers[1])
else:
print("Недостаточно разных чисел")
Проверка: проверьте список, где все числа одинаковые
Задача 10. Группировка слов по первой букве
words = ["python", "php", "sql", "swift"]
groups = {}
for word in words:
first_letter = word[0]
groups.setdefault(first_letter, []).append(word)
print(groups)
Проверка: добавьте слово на уже существующую букву
Задача 11. Удаление дублей с сохранением порядка
items = ["a", "b", "a", "c", "b"]
result = []
for item in items:
if item not in result:
result.append(item)
print(result)
Проверка: проверьте пустой список и список без дублей
Задача 12. Простая функция проверки логина
def is_valid_login(login):
login = login.strip()
return len(login) >= 3 and login.isalnum()
print(is_valid_login("user1"))
print(is_valid_login(" a "))
Проверка: проверьте пробелы, короткий логин и символ !
Как усложнять после решения
Добавьте ввод пользователя, вынесите повторяющуюся логику в функцию и напишите три тестовых запуска. Если задача была про список, проверьте пустой список, один элемент и повторы. Если задача была про строку, проверьте пробелы и разный регистр
Еще задачи для закрепления
Задача 13. Индексы четных чисел
Найдите индексы всех четных чисел в списке
Решение:
numbers = [3, 4, 8, 9, 10]
indexes = []
for index, number in enumerate(numbers):
if number % 2 == 0:
indexes.append(index)
print(indexes)
Проверка: проверьте список без четных чисел
Задача 14. Самое длинное слово
Решение:
words = ["python", "sql", "javascript"]
longest = ""
for word in words:
if len(word) > len(longest):
longest = word
print(longest)
Проверка: проверьте два слова одинаковой длины и пустой список
Задача 15. Сумма по категориям
Решение:
items = [
{"category": "food", "amount": 300},
{"category": "books", "amount": 900},
{"category": "food", "amount": 250},
]
totals = {}
for item in items:
category = item["category"]
totals[category] = totals.get(category, 0) + item["amount"]
print(totals)
Проверка: добавьте новую категорию и пустой список
Задача 16. Меню команд
Решение:
commands = ["add", "list", "exit"]
command = "help"
if command in commands:
print("Команда поддерживается")
else:
print("Неизвестная команда")
Проверка: проверьте регистр букв и пробелы по краям
Как повторять задачи
После этой подборки выберите три задачи и решите их заново через день. Первый раз можно смотреть на готовый код, второй раз оставьте только условие, третий раз измените входные данные. Такой повтор быстро показывает, что вы действительно поняли, а что просто узнали глазами
Хорошая самостоятельная проверка выглядит так: вы можете объяснить условие, назвать нужные переменные, написать решение без копирования и добавить один неудобный тест. Если хотя бы один пункт не получается, вернитесь к самой маленькой версии задачи и соберите ее заново