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, деление на ноль и неизвестная операция. Такая привычка важнее, чем количество решенных задач

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x