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

Содержание статьи
- Задача 1. Вывести первые 10 натуральных чисел
- Задача 2. Вывести шаблон чисел
- Задача 3. Вычислите сумму всех чисел от 1 до заданного числа
- Задача 4. Таблица умножения
- Задача 5. Перебор элементов списка
- Задача 6. Количество чисел в цифре
- Задача 7. Вывести список в обратном порядке
- Задача 8. Используем блок else для отображения сообщения
- Задача 9. Вывести простые числа python
- Задача 10. Python факториал числа
- Задача 11. Вывести числа нечетных позиций списка
- Задача 12. Куб числа Python
- Как выбрать между for и while
- Еще три задачи для самопроверки
- Частые вопросы
- Конструкция if-else (Условия для принятия того, или иного решения)
- Цикл for (Для перебора последовательных элементов)
- Функция range( Повторить то, или иное действие определенное количество раз)
- Цикл while (Повторение одного и того же условия, до тех пор, пока условия является истинным)
- Break и Continue (Прервать или продолжить цикл)
- Вложенные циклы (цикл внутри цикла)
В данном блоке задач, собраны 12 практических программ, которые вам предстоит написать.
- Задачи с использование цикла и конструкций if-else
- Для всех задач решения присутствуют, и проверены на Python 3.12
- Задачи представленные в данном блоке, несут практический опыт. Решайте задачи, и практикуйте свои навыки по циклам и условиям Python
Задача 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 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. Перебор элементов списка
Напишите программу, которая перебирает элементы списка, и выводит только те элементы, которые соответствуют следующим условиям.
- Число кратное
5 - Если число больше
150, то пропускаем, и идем к следующему числу - Если число больше
500, останавливаем цикл
В качестве входных данных используйте данный список:
numbers = [12, 75, 150, 180, 145, 525, 50]
Для решения задачи почитайте тему, про операторов Break, Continue.
Показать подсказку
Показать решение
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.
| Ситуация | Цикл | Пример |
|---|---|---|
| Перебор списка или строки | for | for x in numbers: |
| Повтор N раз | for + range() | for i in range(10): |
| Ввод до стоп-значения | while | while value != 0: |
| Разбор числа по цифрам | while | while 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).