Лабораторная работа №4. Циклы
В Python существуют два типа цикличных выражений:
- Цикл while
- Цикл for
Цикл while
Инструкция while в Python повторяет указанный блок кода до тех пор, пока указанное в цикле логическое выражение будет оставаться истинным. Синтаксис цикла while выглядит следующим образом:
while логическое выражение:
команда_1
команда_2
...
команда_n
После ключевого слова while указывается условное выражение. Пока это выражение возвращает значение True, будет выполняться блок инструкций, который идет далее.
Все инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала строки (4 пробела)
Выход из цикла с помощью break
break — это специальная инструкция в Python, используемая для немедленного выхода из цикла. Когда программа выполняет команду break, она прерывает текущий цикл (будь то for или while) и переходит к инструкции, следующей за циклом. Это полезно, когда нужно остановить выполнение цикла в определённый момент, например, при выполнении условия.
Например:
for i in range(10):
if i == 5:
break # выход из цикла, когда i равно 5
print(i)
Пример цикла с пользовательским вводом
while True:
user_input = input("Введите 'exit' для выхода: ")
if user_input == 'exit':
break # выход из цикла, если пользователь ввел 'exit'
print(f"Вы ввели: {user_input}")
# Этот код будет продолжать запрашивать ввод до тех пор, пока пользователь не введет 'exit'.
Команда continue
continue — это инструкция в Python, используемая для пропуска оставшейся части текущей итерации цикла и перехода к следующей итерации. Это может быть полезно, когда нужно пропустить выполнение определённого кода при выполнении определённого условия.
Пример использования continue в for
for i in range(10):
if i % 2 == 0:
continue # Пропустить четные числа
print(i)
Пример использования continue в while
count = 0
while count < 5:
count += 1
if count == 3:
continue # Пропустить выполнение, когда count равно 3
print(count)
Пример
Программа запрашивает у пользователя целое число и вычисляет факториал.
Код программы:
number = int(input("Введите число: "))
i = 1
factorial = i
while i<=number:
factorial*=i
i+=1
print("Факториал числа {0} равен {1}".format(number,factorial))
Пример вывода
Введите число:
5
Факториал числа 5 равен 120
Цикл for
Цикл for в Python обладает способностью перебирать элементы любого комплексного типа данных (например, строки или списка). Синтаксис цикла while выглядит следующим образом:
for int in range():
команда_1
команда_2
...
команда_n
Переменной int присваивается значение первого элемента функции range(), после чего выполняются команды. Затем переменной int присваивается следующее по порядку значение и так далее до тех пор, пока не будут перебраны все элементы функции range().
Функция range() является универсальной функцией Python для создания списков (list), содержащих арифметическую прогрессию. Чаще всего она используется в циклах for.
range(старт, стоп, шаг) - так выглядит стандартный вызов функции range() в Python. По умолчанию старт равняется нулю, шаг - единице.
Пример
Найти сумму n элементов следующего ряда чисел: 1, -0.5, 0.25, -0.125,..., n. Количество элементов (n) вводится с клавиатуры. Вывести на экран каждый член ряда и его сумму. Решить задачу с использованием циклической конструкции for.
Решение В данном случае ряд чисел состоит из n элементов, где каждый следующий меньше предыдущего в два раза по модулю и имеет обратный знак. Значит, чтобы получить следующий элемент, надо предыдущий разделить на -2.
Какой-либо переменной надо присвоить значение первого элемента ряда (в данном случае это 1). Далее в цикле добавлять ее значение к переменной, в которой накапливается сумма, после чего присваивать ей значение следующего элемента ряда, разделив текущее значение на -2. Цикл должен выполняться n раз.
Код программы
n = int(input("Введите количество элементов в последовательности: "))
x = 1
s = 0
print(x)
for i in range(n):
s+=x
x/=-2
print(x)
print("Сумма ряда: ", s)
Пример вывода
Введите количество элементов в последовательности:
5
1
-0.5
0.25
-0.125
0.0625
-0.03125
Сумма ряда: 0.6875
Пример
Дано целое число, не меньшее 2. Вывести его наименьший натуральный делитель, отличный от 1.
Решение Для начала введем целое число командой int(input(текст сообщения в кавычках)). Затем зададим переменной i значение 2. Переменная i выполняет роль счетчика. Если задать ей значение 1, то условие задачи не будет выполнено, а результатом будет 1. В цикле while в качестве логического вырадени используется команда n%i, сравниваемая с нулем. Таким образом, если остаток от деления введенного числа на текущее значение i не равно нулю, то счетчик увеличивается на 1, а если равно нулю - цикл заканчивается и командой print() выводится сообщение и значение i.
Код программы
n = int(input("Введите целое число, не меньшее 2\n"))
i = 2
while n%i !=0:
i+=1
print("Наименьший натуральный делитель: ",i)
Пример вывода
Введите целое число, не меньшее 2
49
Наименьший натуральный делитель: 7
Вложенные циклы
Вложенные циклы в Python — это циклы, которые находятся внутри других циклов. Они позволяют выполнять итерации по многоуровневым структурам данных, например, по двумерным массивам, и полезны при решении задач, требующих перебора всех комбинаций элементов.
Пример
for i in range(3): # Внешний цикл
for j in range(2): # Внутренний цикл
print(f"i = {i}, j = {j}")
# Вывод:
# i = 0, j = 0
# i = 0, j = 1
# i = 1, j = 0
# i = 1, j = 1
# i = 2, j = 0
# i = 2, j = 1
Задания для самостоятельной работы
1. Дано вещественное число - цена 1 кг конфет. Вывести стоимость 1, 2, ..., 10 кг конфет. Решить задачу, используя циклическую конструкцию for.
Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти:
- сумму всех чисел последовательности
- количество всех чисел последовательности
Решить задачу, используя циклическую конструкцию while.
2. Напишите программу, которая спрашивает пользователя, угадал ли он число от 1 до 10. Программа должна продолжаться до тех пор, пока пользователь не введет правильный ответ. Подсказка: загаданное число генерировать случайным образом. В этом поможет следующий код:
import random
number = random.randint(1, 10)
3.Дано целое число N (> 0). Найти сумму N^2 + (N + 1)^2 + (N + 2)^2 + … + (2·N)^2
4. Напишите программу, которая создает и выводит таблицу умножения для чисел от 1 до 10.
Подсказка: использовать вложенные циклы