Python
Задачи по Python для начинающих: 20 упражнений с решениями
В этом материале ровно 20 упражнений по Python для начинающих. Они идут от ввода данных и условий к циклам, спискам, строкам, словарям и функциям
Каждая задача содержит условие, подсказку, готовое решение и проверку. Лучше сначала написать свой вариант, затем сравнить его с решением и запустить код на других данных
Как работать с подборкой
Подборка закрывает первый практический круг новичка: ввод, условия, циклы, списки, строки, словари и простые функции
Перед просмотром решения попробуйте написать хотя бы черновик. Если задача не идет, выпишите входные данные, ожидаемый результат и одно действие, которое нужно сделать первым
После решения измените данные и запустите код снова. Так вы быстрее увидите, где программа привязана только к одному примеру
Задачи с решениями
Задача 1. Приветствие по имени
Условие: Попросите пользователя ввести имя и выведите персональное приветствие
Подсказка: Сначала получите строку через input, затем соберите ответ через f-string
Решение:
name = input("Ваше имя: ").strip()
print(f"Привет, {name}!")
Проверка: Проверьте имя с пробелами по краям и пустой ввод
Задача 2. Сумма двух чисел
Условие: Прочитайте два числа и выведите их сумму
Подсказка: input возвращает строку, поэтому перед сложением нужен int или float
Решение:
a = int(input("Первое число: "))
b = int(input("Второе число: "))
print(a + b)
Проверка: Проверьте 2 и 3, затем -5 и 10
Задача 3. Площадь прямоугольника
Условие: Пользователь вводит ширину и высоту, программа считает площадь
Подсказка: Площадь равна произведению сторон
Решение:
width = float(input("Ширина: "))
height = float(input("Высота: "))
area = width * height
print(area)
Проверка: Проверьте 3 и 4, результат должен быть 12
Задача 4. Четное или нечетное
Условие: Определите, является ли число четным
Подсказка: Остаток от деления на 2 показывает четность
Решение:
number = int(input("Число: "))
if number % 2 == 0:
print("Четное")
else:
print("Нечетное")
Проверка: Проверьте 0, 7 и 10
Задача 5. Возрастной доступ
Условие: Если пользователю 18 или больше, выведите разрешение, иначе отказ
Подсказка: Условие должно сравнивать число, а не строку
Решение:
age = int(input("Возраст: "))
if age >= 18:
print("Доступ разрешен")
else:
print("Доступ запрещен")
Проверка: Проверьте 17, 18 и 25
Задача 6. Большее из двух чисел
Условие: Прочитайте два числа и выведите большее
Подсказка: Отдельно решите, что делать при равенстве
Решение:
a = int(input("Первое число: "))
b = int(input("Второе число: "))
if a > b:
print(a)
elif b > a:
print(b)
else:
print("Числа равны")
Проверка: Проверьте пары 5/3, 2/9 и 4/4
Задача 7. Счетчик от 1 до N
Условие: Пользователь вводит N, программа печатает числа от 1 до N
Подсказка: range в правой границе не включает последнее число
Решение:
n = int(input("N: "))
for number in range(1, n + 1):
print(number)
Проверка: Проверьте N = 1 и N = 5
Задача 8. Сумма чисел от 1 до N
Условие: Посчитайте сумму всех чисел от 1 до введенного N
Подсказка: Создайте переменную total и увеличивайте ее в цикле
Решение:
n = int(input("N: "))
total = 0
for number in range(1, n + 1):
total += number
print(total)
Проверка: Для N = 5 результат должен быть 15
Задача 9. Таблица умножения
Условие: Выведите таблицу умножения для числа от 1 до 10
Подсказка: Внутри цикла печатайте множитель и результат
Решение:
number = int(input("Число: "))
for multiplier in range(1, 11):
print(f"{number} x {multiplier} = {number * multiplier}")
Проверка: Проверьте число 7 и убедитесь, что строк ровно 10
Задача 10. Количество символов без пробелов по краям
Условие: Прочитайте строку, уберите пробелы по краям и выведите длину
Подсказка: strip не меняет строку на месте, он возвращает новую строку
Решение:
text = input("Введите текст: ").strip()
print(len(text))
Проверка: Введите строку с пробелами в начале и конце
Задача 11. Разворот строки
Условие: Разверните введенную строку в обратном порядке
Подсказка: Срез [::-1] берет строку с конца к началу
Решение:
text = input("Текст: ")
reversed_text = text[::-1]
print(reversed_text)
Проверка: Для python результат должен быть nohtyp
Задача 12. Палиндром
Условие: Проверьте, читается ли строка одинаково слева направо и справа налево
Подсказка: Сначала приведите строку к нижнему регистру и уберите пробелы по краям
Решение:
text = input("Слово: ").strip().lower()
if text == text[::-1]:
print("Палиндром")
else:
print("Не палиндром")
Проверка: Проверьте слова казак, python и Anna
Задача 13. Сумма элементов списка
Условие: Дан список чисел, выведите сумму без встроенной функции sum
Подсказка: Пройдите по списку циклом и накопите total
Решение:
numbers = [3, 5, 2, 10]
total = 0
for number in numbers:
total += number
print(total)
Проверка: Сравните результат с sum(numbers)
Задача 14. Только положительные числа
Условие: Из списка чисел соберите новый список только с положительными значениями
Подсказка: Не удаляйте элементы из исходного списка во время обхода
Решение:
numbers = [-3, 0, 5, 8, -1]
positive = []
for number in numbers:
if number > 0:
positive.append(number)
print(positive)
Проверка: Результат должен быть [5, 8]
Задача 15. Максимум без max
Условие: Найдите максимальное число в непустом списке без функции max
Подсказка: Начните с первого элемента, затем сравнивайте остальные
Решение:
numbers = [4, 9, 1, 12, 7]
largest = numbers[0]
for number in numbers:
if number > largest:
largest = number
print(largest)
Проверка: Проверьте список из одного элемента
Задача 16. Подсчет слов
Условие: Посчитайте, сколько слов в строке
Подсказка: split без аргументов сам убирает лишние пробелы между словами
Решение:
text = "python is a good start"
words = text.split()
print(len(words))
Проверка: Проверьте строку с несколькими пробелами подряд
Задача 17. Частота слов
Условие: Для списка слов посчитайте, сколько раз встречается каждое слово
Подсказка: Словарь удобен, потому что слово становится ключом
Решение:
words = ["cat", "dog", "cat", "bird", "dog", "cat"]
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
print(counts)
Проверка: Для cat должно получиться 3
Задача 18. Функция скидки
Условие: Напишите функцию, которая принимает цену и процент скидки, возвращает новую цену
Подсказка: Функция должна возвращать результат через return, а не только печатать
Решение:
def apply_discount(price, percent):
discount = price * percent / 100
return price - discount
print(apply_discount(1000, 15))
Проверка: Для 1000 и 15 результат должен быть 850
Задача 19. Мини-калькулятор
Условие: Сделайте простую функцию для операций +, -, *, /
Подсказка: Для деления проверьте ноль во втором числе
Решение:
def calculate(a, b, operation):
if operation == "+":
return a + b
if operation == "-":
return a - b
if operation == "*":
return a * b
if operation == "/":
if b == 0:
return "На ноль делить нельзя"
return a / b
return "Неизвестная операция"
print(calculate(10, 2, "/"))
Проверка: Проверьте все операции и деление на ноль
Задача 20. Проверка пароля
Условие: Проверьте пароль: минимум 8 символов, есть хотя бы одна цифра
Подсказка: any помогает проверить условие хотя бы для одного символа
Решение:
password = input("Пароль: ")
has_digit = any(char.isdigit() for char in password)
if len(password) >= 8 and has_digit:
print("Пароль подходит")
else:
print("Пароль слишком простой")
Проверка: Проверьте password, python123 и 12345678
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как проверять свои решения
Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы
Если код работает, объясните его словами. Скажите, какие данные приходят на вход, что хранится в переменных, где меняется результат и почему программа останавливается
Частые ошибки новичков
- читать решение, но не запускать его руками
- менять сразу несколько строк и не понимать, какая из них сломала код
- называть переменные одной буквой там, где можно написать понятное имя
- забывать проверять пустые строки, пустые списки и ноль
- путать вывод через print и возврат результата через return
- оставлять код рабочим только для одного заранее выбранного примера