30 задач по Python для начинающих: от ввода-вывода до функций

Тридцать задач по Python для начинающих, от ввода-вывода и условий до словарей и функций.

У каждой есть условие, решение, настоящий вывод программы и короткий разбор.

В конце таблица частых ошибок новичка и сравнение 11 сайтов, где решение проверяет программа.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 2944 статьи автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3598 экспертных мнений Подписаться на Телеграм-канал
Обложка: 30 задач по Python для начинающих: от ввода-вывода до функций

Ниже 30 задач по Python для начинающих с решениями: от ввода и вывода до словарей и функций. Задачи разбиты на пять уровней. У каждой есть условие, код и запуск с выводом программы. Весь код мы прогнали в Python 3.14, так что ваш результат совпадёт с нашим, если решение верное.

Если Python ещё не установлен, начните с инструкции как скачать и установить Python. Самые первые строки кода разобраны в статье про Hello World и ещё четыре простых примера.

Чтобы задачи превратились в навык, решайте их в таком порядке:

  1. Прочитайте условие и попробуйте решить сами, прежде чем смотреть код. Двадцать минут без подсказки дают больше, чем десять прочитанных решений.
  2. Запустите своё решение на данных из блока «Запуск» и сравните вывод.
  3. Сломайте программу нарочно: введите букву вместо числа, ноль, пустую строку. Посмотрите, что произойдёт.
  4. Через пару дней решите ту же задачу заново, не подглядывая.

Писать код можно в любом редакторе. Для старта удобен VS Code, а как создать в нём файл и запустить его, рассказано в отдельной инструкции.

CheckroiCheckroiПодборка курсов по Python566 курсов • 51 школаСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Уровень 1: ввод, вывод и арифметика

Рой решает первую задачу по Python за ноутбуком

Первые шесть задач о том, с чего начинается любая программа: получить данные от человека, посчитать и показать результат. Здесь пригодятся input(), print() и операторы // и %. Если знаки //, % и ** пока путаются, откройте шпаргалку по операторам Python.

Задача 1: приветствие по имени

Программа спрашивает имя и здоровается с человеком.

name = input("Как вас зовут? ")
print(f"Привет, {name}!")

Запуск:

Как вас зовут? Анна
Привет, Анна!

Тренирует ввод и f-строки. Фигурные скобки внутри f"…" подставляют значение переменной прямо в текст.

Задача 2: сумма и среднее трёх чисел

Человек вводит три целых числа в одну строку через пробел. Нужно вывести их сумму и среднее с точностью до сотых.

a, b, c = map(int, input("Три числа через пробел: ").split())
total = a + b + c
print("Сумма:", total)
print("Среднее:", round(total / 3, 2))

Запуск:

Три числа через пробел: 4 8 16
Сумма: 28
Среднее: 9.33

input() всегда возвращает строку. split() режет её по пробелам, а map(int, …) превращает каждый кусок в число.

Задача 3: минуты в часы и минуты

Дано число минут. Выведите, сколько это часов и минут.

minutes = int(input("Минут: "))
hours, rest = divmod(minutes, 60)
print(f"{hours} ч {rest} мин")

Запуск:

Минут: 135
2 ч 15 мин

divmod(a, b) за один вызов отдаёт пару из целой части и остатка, то есть то же, что a // b и a % b.

Задача 4: градусы Цельсия в Фаренгейты

Переведите температуру из градусов Цельсия в градусы Фаренгейта по формуле F = C × 9 / 5 + 32.

c = float(input("Градусы Цельсия: "))
f = c * 9 / 5 + 32
print(f"{c} °C = {f} °F")
print(f"{c} °C = {f:.1f} °F")

Запуск:

Градусы Цельсия: 36.6
36.6 °C = 97.88000000000001 °F
36.6 °C = 97.9 °F

Первая строка вывода показывает, как дробные числа хранятся в памяти: появляется хвост из нулей и единицы. Почему так, разобрано в учебнике Python. Формат :.1f оставляет один знак после точки.

Задача 5: цифры трёхзначного числа

Дано трёхзначное число. Выведите его цифры по отдельности и их сумму, не превращая число в строку.

n = int(input("Трёхзначное число: "))
a = n // 100
b = n // 10 % 10
c = n % 10
print("Цифры:", a, b, c)
print("Сумма цифр:", a + b + c)

Запуск:

Трёхзначное число: 472
Цифры: 4 7 2
Сумма цифр: 13

Классика школьной информатики. Целочисленное деление на 10 отбрасывает последнюю цифру, остаток от деления на 10 её достаёт.

Задача 6: обмен значений двух переменных

Поменяйте местами значения переменных a и b без третьей переменной.

a = 5
b = 9
a, b = b, a
print("a =", a, "b =", b)

Запуск:

a = 9 b = 5

В Python обмен делается одной строкой: справа собирается пара значений, слева она раскладывается обратно по именам.

Уровень 2: условия if, elif и else

Во второй группе программа начинает выбирать, что делать. Главное здесь порядок проверок: Python идёт по веткам сверху вниз и останавливается на первой подходящей.

Задача 7: чётное или нечётное число

Напишите программу, которая определяет, является число чётным или нечётным.

n = int(input("Число: "))
if n % 2 == 0:
    print(n, "чётное")
else:
    print(n, "нечётное")

Запуск:

Число: -7
-7 нечётное

Решение работает и для отрицательных чисел: в Python остаток от деления получает знак делителя, поэтому -7 % 2 равно 1.

Задача 8: наибольшее из трёх чисел без max()

Найдите наибольшее из трёх чисел, не используя встроенную функцию max().

a, b, c = map(int, input("Три числа: ").split())
biggest = a
if b > biggest:
    biggest = b
if c > biggest:
    biggest = c
print("Наибольшее:", biggest)
print("Проверка через max():", max(a, b, c))

Запуск:

Три числа: 12 47 3
Наибольшее: 47
Проверка через max(): 47

Приём «запомнить лучшего и сравнивать с ним остальных» потом пригодится в задачах на списки.

Задача 9: високосный год

Определите, високосный ли год. Год високосный, если делится на 4, но годы, кратные 100, високосные только тогда, когда делятся ещё и на 400.

import calendar

year = int(input("Год: "))
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
    print(year, "високосный")
else:
    print(year, "обычный")
print("Проверка calendar.isleap:", calendar.isleap(year))

Запуск:

Год: 1900
1900 обычный
Проверка calendar.isleap: False

1900 год делится на 4, но не високосный: он кратен 100 и не кратен 400. Свой ответ удобно сверять с функцией calendar.isleap() из стандартной библиотеки.

Задача 10: оценка по баллам

Переведите баллы от 0 до 100 в оценку. От 85 баллов ставим «отлично», от 70 «хорошо», от 50 «удовлетворительно», ниже «неудовлетворительно». Шкала условная, её легко поменять.

score = int(input("Баллы (0–100): "))
if score >= 85:
    grade = "отлично"
elif score >= 70:
    grade = "хорошо"
elif score >= 50:
    grade = "удовлетворительно"
else:
    grade = "неудовлетворительно"
print("Оценка:", grade)

Запуск:

Баллы (0–100): 73
Оценка: хорошо

Если поставить проверку score >= 50 первой, все 73 балла превратятся в «удовлетворительно». Порядок elif здесь решает всё.

Задача 11: какой это треугольник

Даны три стороны. Определите, существует ли треугольник, и если да, то равносторонний он, равнобедренный или разносторонний.

a, b, c = sorted(map(float, input("Стороны через пробел: ").split()))
if a + b <= c:
    print("Такого треугольника нет")
elif a == b == c:
    print("Равносторонний")
elif a == b or b == c:
    print("Равнобедренный")
else:
    print("Разносторонний")

Запуск:

Стороны через пробел: 5 5 8
Равнобедренный

Сортировка сторон упрощает проверку: достаточно сравнить сумму двух меньших с наибольшей.

Задача 12: калькулятор на четыре действия

Программа получает два числа и знак операции и печатает результат. Деление на ноль обрабатывается отдельно.

a = float(input("Первое число: "))
op = input("Операция (+ - * /): ")
b = float(input("Второе число: "))
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("Неизвестная операция")

Запуск:

Первое число: 10
Операция (+ - * /): /
Второе число: 0
На ноль делить нельзя

Без проверки b == 0 программа упала бы с ошибкой ZeroDivisionError. Полезная привычка: думать о плохом вводе сразу.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Уровень 3: циклы for и while

Изометрическая схема цикла: карточки с числами идут по кругу

Третья группа про повторение. for нужен, когда число повторов известно заранее. while крутится, пока выполняется условие. Подробнее о нём и его ловушках рассказано в статье про цикл while в Python.

Задача 13: таблица умножения

Выведите таблицу умножения для введённого числа от 1 до 10.

n = int(input("Число: "))
for i in range(1, 11):
    print(f"{n} × {i} = {n * i}")

Запуск:

Число: 7
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 4 = 28
7 × 5 = 35
7 × 6 = 42
7 × 7 = 49
7 × 8 = 56
7 × 9 = 63
7 × 10 = 70

range(1, 11) даёт числа от 1 до 10: правая граница в диапазон не входит.

Задача 14: через сколько лет вклад удвоится

На счёте 100 000 ₽, каждый год сумма растёт на 10 %. Через сколько лет она впервые станет не меньше 200 000 ₽?

money = 100_000
years = 0
while money < 200_000:
    money = money * 1.1
    years += 1
print("Лет до удвоения:", years)
print(f"На счёте: {money:,.0f} ₽".replace(",", " "))

Запуск:

Лет до удвоения: 8
На счёте: 214 359 ₽

Здесь заранее неизвестно, сколько раз крутить цикл, поэтому while. Подчёркивание в 100_000 Python игнорирует, оно нужно только для читаемости.

Задача 15: факториал числа

Посчитайте факториал n, то есть произведение всех чисел от 1 до n.

import math

n = int(input("n = "))
result = 1
for i in range(2, n + 1):
    result *= i
print(f"{n}! = {result}")
print("math.factorial:", math.factorial(n))

Запуск:

n = 10
10! = 3628800
math.factorial: 3628800

Свой цикл полезно сверять с готовой функцией math.factorial(): если ответы разошлись, ошибка в границах range.

Задача 16: простое ли число

Определите, простое число или составное.

n = int(input("Число: "))
is_prime = n > 1
for d in range(2, int(n ** 0.5) + 1):
    if n % d == 0:
        is_prime = False
        break
print(n, "простое" if is_prime else "составное")

Запуск:

Число: 97
97 простое

Делители достаточно искать до квадратного корня из n: если у числа есть делитель больше корня, парный ему окажется меньше. break останавливает цикл на первом найденном делителе. В последней строке стоит тернарный оператор, то есть if-else в одну строку.

Задача 17: угадай число

Компьютер загадывает число от 1 до 100, человек угадывает, программа подсказывает «больше» или «меньше» и в конце считает попытки.

import random

secret = random.randint(1, 100)
tries = 0
while True:
    guess = int(input("Ваш вариант: "))
    tries += 1
    if guess < secret:
        print("Больше")
    elif guess > secret:
        print("Меньше")
    else:
        print(f"Угадали за {tries} попыток")
        break

Запуск:

Ваш вариант: 50
Меньше
Ваш вариант: 25
Меньше
Ваш вариант: 12
Меньше
Ваш вариант: 6
Больше
Ваш вариант: 9
Меньше
Ваш вариант: 7
Больше
Ваш вариант: 8
Угадали за 7 попыток

Число каждый раз новое, выше один из запусков. Если каждый раз называть середину оставшегося отрезка, хватает семи попыток: 2 в седьмой степени уже больше 100.

Задача 18: числа Фибоначчи

Выведите первые n чисел Фибоначчи: каждое следующее равно сумме двух предыдущих.

n = int(input("Сколько чисел: "))
a, b = 0, 1
for _ in range(n):
    print(a, end=" ")
    a, b = b, a + b
print()

Запуск:

Сколько чисел: 12
0 1 1 2 3 5 8 13 21 34 55 89 

Параметр end=" " оставляет вывод в одной строке. Знак _ вместо имени переменной показывает, что номер шага нам не нужен.

Задача 19: пирамида из звёздочек

Нарисуйте пирамиду высотой h из символов «*».

h = int(input("Высота: "))
for i in range(1, h + 1):
    print(" " * (h - i) + "*" * (2 * i - 1))

Запуск:

Высота: 5
    *
   ***
  *****
 *******
*********

Строку можно умножить на число: "*" * 3 даёт три звёздочки. На строке i стоит 2i − 1 звёздочек и h − i пробелов слева.

Уровень 4: строки и списки

В четвёртой группе данных становится больше одного значения. Здесь тренируются срезы, перебор и методы строк и списков. Как сложить все элементы списка разными способами, мы разбирали в инструкции про сумму списка.

Задача 20: палиндром

Проверьте, читается ли фраза одинаково слева направо и справа налево. Пробелы, знаки препинания и регистр не учитываются.

text = input("Фраза: ")
clean = "".join(ch for ch in text.lower() if ch.isalnum())
if clean == clean[::-1]:
    print("Палиндром")
else:
    print("Не палиндром")

Запуск:

Фраза: А роза упала на лапу Азора
Палиндром

Срез [::-1] разворачивает строку. isalnum() оставляет только буквы и цифры.

Задача 21: сколько в строке гласных

Посчитайте гласные буквы в строке, русские и латинские.

text = input("Строка: ")
vowels = "аеёиоуыэюяaeiou"
count = 0
for ch in text.lower():
    if ch in vowels:
        count += 1
print("Гласных:", count)

Запуск:

Строка: Привет, Python!
Гласных: 3

Латинскую y мы в список гласных не включили, поэтому в слове Python нашлась одна гласная, а всего их три. Какие буквы считать гласными, решает программист, и это стоит оговорить в условии.

Задача 22: самое длинное слово

Найдите самое длинное слово в предложении.

words = input("Предложение: ").split()
longest = max(words, key=len)
print("Самое длинное слово:", longest, f"({len(longest)} букв)")

Запуск:

Предложение: Программирование начинается с маленьких задач
Самое длинное слово: Программирование (16 букв)

Параметр key=len говорит функции max() сравнивать слова по длине, а не по алфавиту. Знаки препинания split() оставит приклеенными к словам. Все параметры max() описаны в документации, а как в ней ориентироваться, мы рассказывали в статье про сайт python.org.

Задача 23: второе по величине число

Найдите второе по величине значение в списке. Повторы не считаются.

numbers = [7, 3, 9, 9, 2, 5]
unique = sorted(set(numbers))
print("Второе по величине:", unique[-2])

Запуск:

Второе по величине: 7

Если просто отсортировать список, вторым с конца окажется ещё одна девятка. Множество set() убирает повторы.

Задача 24: убрать повторы и сохранить порядок

Удалите из списка повторяющиеся элементы так, чтобы остальные остались в исходном порядке.

items = ["яблоко", "груша", "яблоко", "слива", "груша"]
result = list(dict.fromkeys(items))
print(result)

Запуск:

['яблоко', 'груша', 'слива']

Множество тоже убирает повторы, но оно неупорядочено. Словарь хранит ключи в порядке добавления, поэтому dict.fromkeys() решает задачу в одну строку.

Задача 25: слить два отсортированных списка

Даны два списка, отсортированных по возрастанию. Соберите из них один отсортированный список, не вызывая sort().

a = [1, 4, 9, 12]
b = [2, 3, 10]
i = j = 0
merged = []
while i < len(a) and j < len(b):
    if a[i] <= b[j]:
        merged.append(a[i])
        i += 1
    else:
        merged.append(b[j])
        j += 1
merged += a[i:] + b[j:]
print(merged)
print("Совпадает с sorted():", merged == sorted(a + b))

Запуск:

[1, 2, 3, 4, 9, 10, 12]
Совпадает с sorted(): True

Это приём «двух указателей»: на каждом шаге берём меньший из двух текущих элементов. На нём построена сортировка слиянием.

Уровень 5: словари, множества и функции

Последняя группа ближе к настоящим программам: данные лежат в словарях, повторяющийся код уходит в функции. Когда эти задачи покажутся простыми, попробуйте проект побольше, например шифр Цезаря на Python: там пригодятся и строки, и словари, и функции.

Задача 26: частота слов в тексте

Посчитайте, сколько раз встречается каждое слово, и выведите два самых частых.

from collections import Counter

text = "кот ест рыбу кот спит рыба спит"
counts = {}
for word in text.split():
    counts[word] = counts.get(word, 0) + 1
print(counts)
print(Counter(text.split()).most_common(2))

Запуск:

{'кот': 2, 'ест': 1, 'рыбу': 1, 'спит': 2, 'рыба': 1}
[('кот', 2), ('спит', 2)]

counts.get(word, 0) возвращает 0, если слова ещё нет в словаре. Counter из модуля collections делает то же одной строкой, а слова с одинаковой частотой ставит в порядке первого появления.

Задача 27: общие элементы двух списков

Найдите числа, которые есть в обоих списках, только в первом и хотя бы в одном.

a = [1, 2, 3, 4, 5, 6]
b = [4, 5, 6, 7, 8]
print("Общие:", sorted(set(a) & set(b)))
print("Только в первом:", sorted(set(a) - set(b)))
print("Хотя бы в одном:", sorted(set(a) | set(b)))

Запуск:

Общие: [4, 5, 6]
Только в первом: [1, 2, 3]
Хотя бы в одном: [1, 2, 3, 4, 5, 6, 7, 8]

Операции над множествами повторяют школьные: & даёт пересечение, - разность, | объединение.

Задача 28: функция проверки анаграмм

Напишите функцию, которая проверяет, состоят ли два слова из одних и тех же букв.

def is_anagram(first, second):
    letters1 = sorted(first.lower().replace(" ", ""))
    letters2 = sorted(second.lower().replace(" ", ""))
    return letters1 == letters2

print(is_anagram("Апельсин", "спаниель"))
print(is_anagram("кот", "ток"))
print(is_anagram("кот", "кит"))

Запуск:

True
True
False

Отсортированные буквы двух анаграмм совпадают. Функция возвращает True или False, а печатает результат уже вызывающий код.

Задача 29: функция суммы от 1 до n

Создайте функцию, которая вычисляет сумму всех чисел от 1 до n, где n передаётся как параметр.

def sum_to_n(n):
    total = 0
    for i in range(1, n + 1):
        total += i
    return total

print(sum_to_n(100))
print("По формуле:", 100 * 101 // 2)

Запуск:

5050
По формуле: 5050

Цикл и формула n × (n + 1) / 2 дают одно и то же. Сверка двумя способами быстро показывает, верны ли границы цикла.

Задача 30: мини-проект «учёт расходов»

Человек вводит расходы в формате «категория сумма», пустая строка завершает ввод. Программа выводит суммы по категориям от большей к меньшей и общий итог.

def add_expense(book, line):
    category, amount = line.split()
    book[category] = book.get(category, 0) + int(amount)

book = {}
while True:
    line = input("Расход (категория сумма): ")
    if not line:
        break
    add_expense(book, line)

for category, total in sorted(book.items(), key=lambda item: item[1], reverse=True):
    print(f"{category}: {total} ₽")
print("Всего:", sum(book.values()), "₽")

Запуск:

Расход (категория сумма): еда 450
Расход (категория сумма): транспорт 120
Расход (категория сумма): еда 300
Расход (категория сумма): кафе 680
Расход (категория сумма): 
еда: 750 ₽
кафе: 680 ₽
транспорт: 120 ₽
Всего: 1550 ₽

Здесь собрано всё сразу: цикл while, словарь, функция и сортировка по значению через key=lambda. Следующий шаг: сохранять расходы в файл, чтобы они не пропадали после закрытия программы.

Частые ошибки новичка в этих задачах

Рой с чек-листом уверенно обходит грабли

Большая часть ошибок в первых задачах повторяется у всех. Если программа ведёт себя странно, сначала проверьте эту таблицу.

Что видите Почему так Что делать
"2" + "3" даёт 23, а не 5 input() возвращает строку, и плюс склеивает строки Обернуть ввод в int() или float()
Ошибка IndentationError Сбит отступ или смешаны пробелы и табуляция Ставить четыре пробела на уровень, как советует PEP 8, и включить в редакторе показ невидимых символов
Цикл делает на один шаг меньше range(1, n) не включает n Писать range(1, n + 1)
0.1 + 0.2 == 0.3 даёт False Дробные числа хранятся в двоичном виде с погрешностью Сравнивать через round() или math.isclose()
round(2.5) даёт 2, а не 3 При равном расстоянии round() округляет к чётному числу Для денег и отчётов брать модуль decimal с нужным правилом округления
Программа падает на нуле или пустой строке Нет проверки ввода Проверять данные до вычисления, как в задаче 12

Ещё одна частая ловушка: менять список прямо во время перебора. Элементы «проскакивают», и результат выходит неполным.

Решение: собирать новый список из нужных элементов, как в задаче 24.

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Где решать задачи по Python дальше

Тридцати задач хватит, чтобы почувствовать основы. Дальше нужен поток новых задач и проверка, которую нельзя обмануть. На площадках ниже решение проверяет программа.

Площадка Язык Что там Как сдаётся решение
Информатикс русский Задачи по темам, от ввода-вывода до динамического программирования, и курс Д. П. Кириенко «Программирование на языке Python» школы 179 Отправка в систему после входа, у части задач есть разборы
acmp.ru русский «Школа программиста»: архив из 1000 задач с темами и сложностью, раздел «Новичкам» Проверяющая система, среди компиляторов Python 3.13.8
Timus Online Judge русский, английский Архив задач, по описанию сайта, в основном с соревнований Уральского федерального университета, уральских чемпионатов и отборов ICPC Автоматическая проверка, доступны Python 3.12 и PyPy 3.10
pyTask русский 168 задач на Python с фильтром от «Начинающий» до «Эксперт» и тегами: строки, списки, словари, ООП Часть задач помечена PREMIUM, у решивших есть рейтинг
Codewars английский Задачи-«ката» на технику и логику, от простых до трудных Тесты запускаются в браузере, после решения открываются чужие решения
Exercism английский 146 упражнений и 17 тем Python, бесплатно Автоматический разбор кода и наставники
CheckiO английский Задачи в виде игры с картой миссий, уровни Easy, Normal и Advanced Сайт открывается не всегда: 15 октября 2026 года py.checkio.org не отвечал ни из России, ни из-за рубежа, при этом главная checkio.org работала
Edabit английский Больше 2500 задач на Python, фильтр сложности начинается с Very Easy Кнопка Check в редакторе
HackerRank английский Раздел Python начинается с задачи «Hello, World!», у задач видны баллы и доля решивших Решение в редакторе на сайте
Project Euler (перевод на русский) английский, русский перевод 1004 задачи на стыке математики и программирования Решать можно на любом языке
Advent of Code английский Адвент-календарь коротких головоломок, новые выходят в декабре Ответ считается по вашим входным данным. Из России сайт открывается не всегда: в нашей проверке он ответил только со второй попытки

Порядок простой: начните с русскоязычных задачников, где условия понятны без словаря, а к английским площадкам переходите, когда базовые темы перестанут пугать. Заодно подтянется технический английский, без которого документацию Python не прочитать.

Как мы отбирали площадки

Мы взяли 17 сайтов, которые чаще всего советуют начинающим, и 14 октября 2026 года открыли каждый с сервера в России. Смотрели три вещи: открывается ли сайт, есть ли на нём задачи для начинающих и как сдаётся решение. В таблицу попали только факты, которые видны на самих страницах: число задач, уровни, версии Python.

Шесть сайтов не вошли. LeetCode и Codeforces ответили нашему серверу кодом 403: так сайты обычно отсекают автоматические запросы, и в браузере они, скорее всего, откроются, но проверить их мы не смогли. Новая версия PythonTutor на ru.pythontutor.ru не ответила вовсе. Яндекс Контест служит площадкой для соревнований и занятий, которые проводят школы и вузы. CodinGame учит через игры-соревнования. Code.mu в первую очередь учебник по десяткам технологий, задачник там идёт приложением.

Данные в таблице актуальны на 14 октября 2026 года. Сайты закрываются и меняют условия, поэтому перед регистрацией загляните на страницу площадки.

Где освоить Python системно

Задачи хорошо закрепляют синтаксис, но сами по себе не складываются в профессию. Дальше нужны проекты, работа с файлами и базами данных, ООП, тесты и разбор кода с наставником. С ООП можно начать прямо сейчас: в статье про классы и объекты те же идеи показаны на Python.

Если вы целитесь в работу, посмотрите, как стать Python-разработчиком с нуля, и сравните программы обучения в каталоге курсов по Python. Там собраны программы разных школ, и их удобно сравнить по цене и содержанию.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Профессия «Python-разработчик»
Перейти на сайт курса
SkillboxSkillbox157 335 ₽5987 ₽/мес.10 месяцевОбзор курса
Fullstack-разработчик на Python
Перейти на сайт курса
НетологияНетология161 200 ₽7125 ₽/мес.21 месяцОбзор курса
ДО Профессия Python-разработчик
Перейти на сайт курса
GeekBrainsGeekBrains149 001 ₽3167 ₽/мес.10 месяцевОбзор курса
Автоматизированное тестирование на Python
Перейти на сайт курса
SkillboxSkillbox118 666 ₽4108 ₽/мес.9 месяцевОбзор курса
Программирование на Python ПРО
Перейти на сайт курса
SkillboxSkillbox119 600 ₽ - 17 месяцевОбзор курса

Больше программ — в полном каталоге курсов по Python

Часто задаваемые вопросы

С каких задач начать изучение Python?

С ввода-вывода и арифметики, это задачи 1–6 из подборки. Они учат получать данные через input(), превращать строку в число и печатать результат. За условия и циклы стоит браться, когда эти шесть решаются без подсказок.

Где решать задачи по Python онлайн с автопроверкой?

На русском языке подойдут Информатикс, acmp.ru, Timus и pyTask. На английском: Codewars, Exercism, CheckiO, Edabit и HackerRank. Чем они отличаются, показано в таблице в разделе «Где решать задачи по Python дальше».

Нужна ли математика, чтобы решать задачи на Python?

Для задач этого уровня хватит школьной арифметики: деления с остатком, процентов, квадратного корня. Больше математики понадобится в олимпиадных архивах вроде Timus и в Project Euler, где задачи стоят на стыке математики и программирования.

Что делать, если задача не решается?

Разбейте её на шаги и запишите их словами, пока без кода. Потом проверьте программу на маленьких данных, которые легко посчитать в уме. Если не помогло, прочитайте решение, закройте его и через день напишите своё заново.

Сколько задач нужно решить, чтобы выучить Python?

Точного числа нет. Ориентир такой: когда задачи четвёртого и пятого уровня решаются без подсказок за 15–20 минут, пора переходить к небольшим своим проектам, например боту или обработке таблиц. Системно язык удобнее осваивать с наставником, программы собраны в каталоге курсов по Python.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!