Этот цикл пробегается по набору значений, помещает каждое значение в переменную, и затем в цикле мы можем с этой переменной производить различные действия.
Формальное определение цикла for:
for переменная in набор_значений:
инструкции
После ключевого слова for идет название переменной, в которую будут помещаться значения. Затем после оператора in указывается набор значений и двоеточие.
А со следующей строки располагается блок инструкций цикла, которые также должны иметь отступы от начала цикла.
При выполнении цикла Python последовательно получает все значения из набора и передает их переменную. Когда все значения из набора будут перебраны, цикл завершает свою работу.
В качестве набора значений, например, можно рассматривать строку, которая по сути представляет набор символов.
Посмотрим на примере:
message = "Hello"
for c in message:
print(c)
В цикле определяется переменную c, после оператора in в качестве перебираемого набора указана переменная message, которая хранит строку "Hello". В итоге цикл for будет перебираеть последовательно все символы из строки message и помещать их в переменную c. Блок самого цикла состоит из одной инструкции, которая выводит значение переменной с на консоль.
Цикл for также может иметь дополнительный блок else, который выполняется после завершения цикла:
message = "Hello"
for c in message:
print(c)
else:
print(f"Последний символ: {c}. Цикл завершен");
print("Работа программы завершена") # инструкция не имеет отступа, поэтому не относится к else
Стоит отметить, что блок else имеет доступ ко всем переменным, которые определены в цикле for.
Итак, как работает функция Python под названием range? Простыми словами, range() позволяет вам генерировать ряд чисел в рамках заданного диапазона.
В зависимости от того, как много аргументов вы передаете функции, вы можете решить, где этот ряд чисел начнется и закончится, а также насколько велика разница будет между двумя числами.
for i in range(3, 16, 3):
quotient = i / 3
print(f"{i} делится на 3, результат {int(quotient)}.")
В этом цикле вы просто можете создать ряд чисел, кратных трем, так что вам не нужно вводить каждое из них лично.
Есть три способа вызова range():
Вызывая range() с одним аргументом, вы получите ряд чисел, начинающихся с 0 и включающих каждое число до, но не включая число, которое вы обозначили как конечное (стоп).
Как это выглядит на практике:
for i in range(3):
print(i)
Вызывая range() с двумя аргументами, вам нужно решить не только, где ряд чисел должен остановиться, но и где он должен начаться, так что вам не придется начинать с нуля каждый раз.
Вы можете использовать range() для генерации ряда чисел, начиная с А до Б, используя диапазон (А, Б).
Попробуем вызывать range() с двумя аргументами:
for i in range(1, 8):
print(i)
Вызывая range() с тремя аргументами, вы можете выбрать не только то, где ряд чисел начнется и остановится, но также то, на сколько велика будет разница между одним числом и следующим. Если вы не задаете этот «шаг», то range() автоматически будет вести себя так, как если бы шаг был бы равен 1.
Обратите внимание: шаг может быть положительным, или отрицательным числом, но он не может равняться нулю:
for i in range(3, 16, 3):
quotient = i / 3
print(f"{i} делится на 3, результат {int(quotient)}.")
Если вы хотите выполнить инкрементацию, то вам нужно, чтобы шаг был положительным числом. Чтобы понять, что под этим имеется ввиду, введите следующий код:
for i in range(3, 100, 25):
print(i)
Вы получили ряд чисел, каждое из которых больше предыдущего на 25, т.е., на заданный вами шаг.
Если ваш шаг положительный — то вы двигаетесь по ряду увеличивающихся чисел, это называется инкрементация. Если ваш шаг отрицательный, то вы двигаетесь по ряду убывающих чисел, это называется декрементация. Это позволяет вам идти вспять.
В следующем примере ваш шаг будет -2. Это значит, что декрементация будет равна 2 для каждого цикла:
for i in range(10, -6, -2):
print(i)
Одни циклы внутри себя могут содержать другие циклы. Рассмотрим на примере вывода таблицы умножения:
for i in range(1,11):
for j in range(1,11):
print(i * j, end="\t")
j += 1
print("\n")
j = 1
i += 1
Для управления циклом мы можем использовать специальные операторы break и continue. Оператор break осуществляет выход из цикла. А оператор continue выполняет переход к следующей итерации цикла.
Оператор break может использоваться, если в цикле образуются условия, которые несовместимы с его дальнейшим выполнением.
Рассмотрим следующий пример:
for number in range(5):
if number == 3 : # если number = 3, выходим из цикла
break
print(f"number = {number}")
Здесь цикл for проверяет условие number < 5. И пока number не равно 5, предполагается, что значение number будет выводиться на консоль. Однако внутри цикла также проверяется другое условие: if number == 3. То есть, если значение number равно 3, то с помощью оператора break выходим из цикла.
В отличие от оператора break оператор continue выполняет переход к следующей итерации цикла без его завершения. Например, в предыдущем примере заменим break на continue:
for number in range(5):
if number == 3 : # если number = 3, выходим из цикла
continue
print(f"number = {number}")
Функция random() возвращает случайное число с плавающей точкой в промежутке от 0.0 до 1.0. Если же нам необходимо число из большего диапазона, скажем от 0 до 100, то мы можем соответственно умножить результат функции random на 100.
import random
number = random.random() # значение от 0.0 до 1.0
print(number)
number = random.random() * 100 # значение от 0.0 до 100.0
print(number)
Функция randint(min, max) возвращает случайное целое число в промежутке между двумя значениями min и max.
import random
number = random.randint(20, 35) # значение от 20 до 35
print(number)
Функция randrange() возвращает случайное целое число из определенного набора чисел. Она имеет три формы:
import random
number = random.randrange(10) # значение от 0 до 10
print(number)
number = random.randrange(2, 10) # значение в диапазоне 2, 3, 4, 5, 6, 7, 8, 9
print(number)
number = random.randrange(2, 10, 2) # значение в диапазоне 2, 4, 6, 8
print(number)
N
, затем вводится ровно N
целых чисел. Какое наименьшее число переменных нужно для решения этой задачи?n
вычислите сумму \(1^3+2^3+3^3+…+n^3\).A
и B
(при этом A ≤ B
). Выведите все числа от A
до B
включительно.A
и В
. Выведите все числа от A
до B
включительно, в порядке возрастания, если A < B
, или в порядке убывания в противном случае.A
и В
, A>B
. Выведите все нечётные числа от A
до B
включительно, в порядке убывания. В этой задаче можно обойтись без инструкции if
.N
чисел: сначала вводится число N
, затем вводится ровно N
целых чисел. Подсчитайте количество нулей среди введенных чисел и выведите это количество. Вам нужно подсчитать количество чисел, равных нулю, а не количество цифр.n
называется произведение 1⋅2⋅…⋅n
. Обозначение: n!
По данному натуральному n
вычислите значение n!
. Пользоваться математической библиотекой math
в этой задаче запрещено.n
вычислите сумму 1!+2!+3!+...+n!
В решении этой задачи можно использовать только один цикл. Пользоваться математической библиотекой math
в этой задаче запрещено.1
до N
. Одна карточка потерялась. Найдите ее, зная номера оставшихся карточек. Дано число N
, далее N − 1
номер оставшихся карточек (различные числа от 1
до N
). Программа должна вывести номер потерянной карточки. Для самых умных: массивами и аналогичными структурами данных пользоваться нельзя.n ≤ 9
выведите лесенку из n
ступенек, i
-я ступенька состоит из чисел от 1
до i
без пробелов.