Python
Задачи по программированию на Python
Хороший набор задач по Python должен вести от простого ввода и условий к маленьким прикладным сценариям. Новичку мало увидеть «напишите цикл» и готовый ответ. Важно понять, какие данные входят, какое решение ожидается и как проверить себя без подсказки
Ниже задачи идут по нарастанию сложности. Для каждой есть короткое условие, решение и идея для самостоятельного изменения. Не пытайтесь пройти все за один подход. Лучше решить 5 задач руками, чем быстро пролистать 20 готовых ответов
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Приветствие по имени
Условие: пользователь вводит имя, программа выводит приветствие
name = input("Введите имя: ").strip()
print(f"Привет, {name}!")
Проверьте пустой ввод. Если пользователь просто нажал Enter, можно вывести нейтральное сообщение
name = input("Введите имя: ").strip()
if name:
print(f"Привет, {name}!")
else:
print("Привет!")
Сумма двух чисел
Условие: пользователь вводит два числа, программа считает сумму
a = int(input("Первое число: "))
b = int(input("Второе число: "))
print(a + b)
Типичная ошибка здесь — забыть int(). Без преобразования Python сложит строки, и "2" + "3" даст "23", а не 5
Четное или нечетное число
Условие: определить, делится ли число на 2 без остатка
number = int(input("Число: "))
if number % 2 == 0:
print("четное")
else:
print("нечетное")
Измените задачу: проверьте, делится ли число на 3, 5 или 10. Так вы закрепите оператор остатка %
Максимум из трех чисел
numbers = [
int(input("Первое число: ")),
int(input("Второе число: ")),
int(input("Третье число: ")),
]
print(max(numbers))
Если хотите потренировать условия, решите ту же задачу без max()
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
largest = a
if b > largest:
largest = b
if c > largest:
largest = c
print(largest)
Таблица умножения для одного числа
number = int(input("Число: "))
for i in range(1, 11):
print(f"{number} x {i} = {number * i}")
Проверьте, что будет при числе 0, отрицательном числе и большом числе. Это помогает видеть, где программа работает универсально, а где нужны ограничения
Подсчет гласных в строке
text = input("Текст: ").lower()
vowels = "аеёиоуыэюяaeiou"
count = 0
for char in text:
if char in vowels:
count += 1
print(count)
Эта задача тренирует цикл по строке, условие и накопление результата в переменной
Список покупок
Условие: пользователь вводит товары, пустая строка завершает ввод
items = []
while True:
item = input("Товар: ").strip()
if item == "":
break
items.append(item)
print("Список покупок:")
for item in items:
print("-", item)
Добавьте проверку дублей: если товар уже есть в списке, не добавляйте его второй раз
Средняя оценка
raw = input("Оценки через пробел: ")
grades = [int(part) for part in raw.split()]
average = sum(grades) / len(grades)
print(round(average, 2))
Что проверить: пустой ввод, пробелы в начале и оценку не числом. Для первой версии можно считать, что пользователь вводит данные правильно, но в реальных программах проверка нужна
Поиск самого длинного слова
words = input("Слова через пробел: ").split()
longest = ""
for word in words:
if len(word) > len(longest):
longest = word
print(longest)
Измените решение так, чтобы программа выводила не одно слово, а все слова максимальной длины
Мини-калькулятор
a = float(input("a: "))
b = float(input("b: "))
op = input("Операция (+ - * /): ").strip()
if op == "+":
print(a + b)
elif op == "-":
print(a - b)
elif op == "*":
print(a * b)
elif op == "/":
if b == 0:
print("На ноль делить нельзя")
else:
print(a / b)
else:
print("Неизвестная операция")
Здесь полезно прогнать неудобные случаи: деление на ноль, неизвестная операция, дробные числа, отрицательные числа
Словарь частот слов
text = input("Текст: ").lower()
words = text.split()
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
for word, count in counts.items():
print(word, count)
Это первая задача, где словарь действительно полезен. Ключом становится слово, значением — количество повторений
Простая проверка пароля
password = input("Пароль: ")
has_digit = any(char.isdigit() for char in password)
has_letter = any(char.isalpha() for char in password)
long_enough = len(password) >= 8
if has_digit and has_letter and long_enough:
print("Пароль подходит")
else:
print("Пароль слишком простой")
Усложните задачу: добавьте проверку заглавной буквы и спецсимвола
Как заниматься с этими задачами
После каждого решения задайте себе три вопроса: какие данные входят, где программа принимает решение, какой результат должен получиться. Если можете объяснить код вслух без подсказки, тема закрепилась лучше, чем после простого копирования
Удаление дублей из списка
raw = input("Числа через пробел: ")
numbers = raw.split()
unique = []
for number in numbers:
if number not in unique:
unique.append(number)
print(" ".join(unique))
Здесь важно понять порядок. set() тоже удаляет дубли, но может изменить порядок элементов. Для пользовательского списка порядок часто важен
Проверка палиндрома
text = input("Слово или фраза: ").lower()
clean = ""
for char in text:
if char.isalnum():
clean += char
if clean == clean[::-1]:
print("палиндром")
else:
print("не палиндром")
Проверьте строки топот, А роза упала на лапу Азора и обычное слово. Эта задача хорошо тренирует работу со строкой и срезом
Простая адресная книга
contacts = {}
while True:
command = input("add/find/exit: ").strip().lower()
if command == "add":
name = input("Имя: ").strip()
phone = input("Телефон: ").strip()
contacts[name] = phone
elif command == "find":
name = input("Кого найти: ").strip()
print(contacts.get(name, "Контакт не найден"))
elif command == "exit":
break
else:
print("Неизвестная команда")
Это уже маленькая программа: есть цикл, команды, словарь, добавление, поиск и выход. Если вы понимаете эту задачу, можно переходить к сохранению данных в файл
Сохранение результата в файл
tasks = ["купить хлеб", "позвонить клиенту", "оплатить хостинг"]
with open("tasks.txt", "w", encoding="utf-8") as file:
for task in tasks:
file.write(task + "\n")
После запуска откройте файл tasks.txt. Так вы увидите, как данные выходят за пределы программы и становятся обычным файлом на диске
Как проверять свои решения
Для каждой задачи сделайте минимум три запуска: обычный случай, пустой или короткий ввод, неудобный случай. Например, для калькулятора это 2 + 3, деление на ноль и неизвестная операция. Такая привычка важнее, чем количество решенных задач