Python: уроки, справочник и задачи

Задачи на циклы и условия в Python

Раздел: Основы Python · Обновлено 31.10.2026

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

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

Задачи на циклы и условия в Python
Фото: GlacierNPS / Public domain, Wikimedia Commons
Содержание статьи
  1. Задача 1. Вывести первые 10 натуральных чисел
  2. Задача 2. Вывести шаблон чисел
  3. Задача 3. Вычислите сумму всех чисел от 1 до заданного числа
  4. Задача 4. Таблица умножения
  5. Задача 5. Перебор элементов списка
  6. Задача 6. Количество чисел в цифре
  7. Задача 7. Вывести список в обратном порядке
  8. Задача 8. Используем блок else для отображения сообщения
  9. Задача 9. Вывести простые числа python
  10. Задача 10. Python факториал числа
  11. Задача 11. Вывести числа нечетных позиций списка
  12. Задача 12. Куб числа Python
  13. Как выбрать между for и while
  14. Еще три задачи для самопроверки
    1. Задача 13. Сумма чисел до нуля
    2. Задача 14. Кратные 3 или 5, но не 15
    3. Задача 15. Числа Фибоначчи до N
  15. Частые вопросы
    1. Почему цикл while не останавливается?
    2. Чем break отличается от continue?
    3. Зачем print(..., end=" ")?
    4. Как перебрать список с конца?

В данном блоке задач, собраны 12 практических программ, которые вам предстоит написать.

Задача 1. Вывести первые 10 натуральных чисел

Смотрите тему: Цикл while

Напишите программу, которая средствами цикла while, выводит первые 10 натуральных чисел.

1
2
3
4
5
6
7
8
9
10

Если вы хорошо усвоили теоретический материал, то вам не составит труда решить данную задачу.

Показать решение
i = 1
while i <= 10:
    print(i)
    i += 1

Задача 2. Вывести шаблон чисел

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

1 2 3 4 5 
2 3 4 5 
3 4 5 
4 5 
5
Показать подсказку
  • Создаём цикл for с функцией range()
  • Внутри первого цикла, создаем внутренний цикл с функцией range()
  • Перебираем во внутреннем цикле, результат перебора внешнего цикла
  • Печатаем результат
Показать решение
for i in range(1,6):
    for j in range(i,6):
        print(j,end=' ')
    print('')

Задача 3. Вычислите сумму всех чисел от 1 до заданного числа

Напишите программу, которая вычисляет сумму всех чисел от 1 до заданного пользователем числа. К примеру, пользователь ввел число 10, на выходе программа должна сложить все числа от 1 до 10, и выдать нам результат 55.

Введите число 10
Сумма составляет: 55
Показать подсказку
  • В первую очередь создаем переменную n, и используем функцию input() для пользовательского ввода
  • Переводим эту переменную в тип данных int()
  • Создаем переменную s, в ней будем хранить суммы предыдущих чисел
  • Запускаем цикл for и функцию range()
  • При каждой итерации цикла, складываем предыдущие числа (s += i)
Показать решение
n = int(input())
s = 0
for i in range(1, n + 1):
    s += i
print("Сумма составляет:", s)

Конечно у данной задачи, как и у остальных, есть много разных альтернативных решений, но в качестве дополнительного решения, попробуйте воспользоваться стандартной функцией sum().

Задача 4. Таблица умножения

Напишите программу, для печати таблицы умножения для заданного числа. К примеру если num = 2, то ожидаемые выходные данные, должны быть следующими:

2
4
6
8
10
12
14
16
18
20
Показать подсказку
  • Объявляем переменную n
  • Запускаем цикл for для повторения первых 10 чисел
  • При каждой итерации цикла, умножаем на 2 текущее число (s = n * i)
  • Выводим результат умножения
Показать решение
n = 2

for i in range(1, 11, 1):
    product = n * i
    print(product)

Задача 5. Перебор элементов списка

Напишите программу, которая перебирает элементы списка, и выводит только те элементы, которые соответствуют следующим условиям.

  1. Число кратное 5
  2. Если число больше 150, то пропускаем, и идем к следующему числу
  3. Если число больше 500, останавливаем цикл

В качестве входных данных используйте данный список:

numbers = [12, 75, 150, 180, 145, 525, 50]

Для решения задачи почитайте тему, про операторов Break, Continue.

Показать подсказку
  • Запускаем цикл for для перебора элементов списка
  • Используем конструкцию break для разрыва цикла, если текущий элемент больше 500
  • Используем continue, для перехода к следующему числу, если текущее число больше 150
  • Используйте условие number % 5 == 0, что бы проверить, делится ли число на 5
Показать решение

numbers = [12, 75, 150, 180, 145, 525, 50]

for item in numbers:
    if item > 500:
        break
    elif item > 150:
        continue
    elif item % 5 == 0:
        print(item)

Задача 6. Количество чисел в цифре

Напишите программу, которая считает количество чисел в цифре. К примеру в цифре 4567321, 7 чисел. Для решения данной задачи воспользуйтесь циклом while.

Показать подсказку
  • Устанавливаем счетчик, для подсчета чисел (count = 0)
  • Запускаем цикл while, с условием number != 0
  • В каждой итерации цикла, делим число на 10
  • После каждого деления прибавляем 1 к счетчику
  • Печатаем счетчик
Показать решение
num = 75869
count = 0
while num != 0:
    num = num // 10
    count = count + 1
print("Чисел:", count)

Задача 7. Вывести список в обратном порядке

Вывести список в обратном порядке, это довольно интересная задача, которая дает хорошее понимание работы списка с циклом. И так, задача ясна, дан следующий список:

list1 = [10, 20, 30, 40, 50]

Ожидаемый результат:

50
40
30
20
10
Показать подсказку
  • Вариант 1. Можно сразу воспользоваться встроенной функцией reversed(), что бы перевернуть список
  • Вариант 2. Используем цикл for и функцию len().
    • Сначала определяем длину списка len(list)
    • Запускаем цикл for и используем функцию range(size,-1,-1), читаем список в обратном порядке
    • при каждой итерации выводим на печать list[i]
Показать решение
list1 = [10, 20, 30, 40, 50]

new_list = reversed(list1)
for item in new_list:
    print(item)

Задача 8. Используем блок else для отображения сообщения

Напишите простенькую программу, в которой выводятся числа от 1 до 5 в цикле, после завершения цикла, программа печатает строку "Готово!" .

Дано:

for i in range(5):
    print(i)

Ожидаемый результат:

0
1
2
3
4
Готово!
Показать решение
for i in range(5):
    print(i)

else:
    print("Готово!")

Задача 9. Вывести простые числа python

Простое число, это число которое нельзя получить путем умножения двух целых чисел. К примеру число 6, не является простым число, так как, его можно получить в результате умножения 2 x 3 = 6.

А вот число 37 к примеру, это простое число, потому что нет целых чисел, при умножении которых мы получим результат 37. Суть этой задачи заключается в том, что бы вывести все простые числа, из определенного диапазона.

Дано:

start = 25
end = 50

Ожидаемые выходные данные:

Простые числа от 25 до 50 являются:
29
31
37
41
43
47
Показать решение
start = 25
end = 50

for num in range(start, end + 1):
    if num > 1:
       for i in range(2, num):
           if (num % i) == 0:
               break
       else:
           print(num)

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

Задача 10. Python факториал числа

Напишите программу, которая использует цикл для нахождение факториала числа n. Факториал числа, это умножение всех целых чисел от выбранного числа, до 1.

К примеру, факториал числа 5:

5! = 5 × 4 × 3 × 2 × 1 = 120
Показать подсказку
  • Создаем переменную factorial = 1
  • Запускаем цикл с функцией range() от 1 до n. В данном случае цикл отработает 5 раз
  • На каждой итерации цикла, умножаем factorial = factorial * i
  • Печатаем переменную factorial
Показать решение
num = 5
factorial = 1
if num < 0:
    print("Для отрицательных чисел, факториал не существует")
elif num == 0:
    print("The factorial of 0 is 1")
else:
    for i in range(1, num + 1):
        factorial = factorial * i
        print(factorial)

Практически похожую задачу, мы уже решали в теоретическом блоке, "Циклы и условия",Поиск факториала числа, так же советую просмотреть задачу, по поиску рядов Фибоначчи.

Задача 11. Вывести числа нечетных позиций списка

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

Дано:

my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Ожидаемые выходные данные:

20 40 60 80 100
Показать решение
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for i in my_list[1::2]:
     print(i, end=" ")

Задача 12. Куб числа Python

Напишите программу, для расчета куба из все чисел от 1 до числа n.

Дано:

input_number = 6

Ожидаемые выходные данные:

Текущее число: 1, куб: 1
Текущее число: 2, куб: 8
Текущее число: 3, куб: 27
Текущее число: 4, куб: 64
Текущее число: 5, куб: 125
Текущее число: 6, куб: 216
Показать подсказку
  • Запустите цикл for и функцию range()
  • В диапазоне укажите 1 и n(заданное число)
  • На каждом проходе цикла, вычисляйте куб текущего числа (i), умножая его на себя три раза
Показать решение
input_number = 6
for i in range(1, input_number + 1):
    print(f"Текущее число: {i}, куб: {i ** 3}")

Как выбрать между for и while

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

СитуацияЦиклПример
Перебор списка или строкиforfor x in numbers:
Повтор N разfor + range()for i in range(10):
Ввод до стоп-значенияwhilewhile value != 0:
Разбор числа по цифрамwhilewhile n > 0: n //= 10

Блок else у цикла выполняется, только если цикл завершился без break. На этом построено решение задачи про простые числа: если делитель не найден, срабатывает else и число печатается.

Еще три задачи для самопроверки

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

Задача 13. Сумма чисел до нуля

Программа читает числа с клавиатуры, пока пользователь не введет 0, и выводит сумму и количество введенных чисел (ноль не считается).

Решение:

total = 0
count = 0
while True:
    value = int(input("Число (0 - конец): "))
    if value == 0:
        break
    total += value
    count += 1
print(f"Сумма: {total}, чисел: {count}")

Задача 14. Кратные 3 или 5, но не 15

Выведите в строку все числа от 1 до 50, которые делятся на 3 или на 5, но не делятся на 15.

Решение:

for n in range(1, 51):
    if n % 15 == 0:
        continue
    if n % 3 == 0 or n % 5 == 0:
        print(n, end=" ")

Проверка на 15 стоит первой и отсекает лишние числа через continue.

Задача 15. Числа Фибоначчи до N

Выведите все числа Фибоначчи, не превышающие N. Для N = 100 результат: 0 1 1 2 3 5 8 13 21 34 55 89.

Решение:

n = 100
a, b = 0, 1
while a <= n:
    print(a, end=" ")
    a, b = b, a + b

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

Частые вопросы

Короткие ответы на то, что чаще всего мешает решить задачи этого блока.

Почему цикл while не останавливается?

Внутри тела не меняется переменная из условия. Например, в while i <= 10 нужно увеличивать i на каждом шаге, иначе условие всегда истинно. Прервать зависшую программу в терминале можно сочетанием Ctrl+C.

Чем break отличается от continue?

break завершает цикл полностью, continue пропускает остаток текущего шага и переходит к следующему. Подробно оба оператора разобраны в статье про break и continue.

Зачем print(..., end=" ")?

По умолчанию print() переводит строку после каждого вызова. Параметр end заменяет перевод строки на пробел, и значения выводятся в одну строку.

Как перебрать список с конца?

Проще всего через reversed(lst) или срез lst[::-1]. Вариант с индексами выглядит так: for i in range(len(lst) - 1, -1, -1).