Цикл for

Модуль 1: Python Core
3 уровень , 7 лекция
Открыта

8.1 Цикл for

То, что можно выполнять группу команд по заданному условию — это отлично. А что, если я хочу выполнить какое-то действие 100 раз? Как это сделать?

Для этого в языке Python есть циклы. И для нашей задачи идеально подходит цикл for. Общий вид оператора for таков:

for переменная in список_значений:
    команда1
    команда1
    командаN

Где список_значений — это некий набор значений: список, строка, словарь (о них позднее).

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

Пример:

Пример Пояснение

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
1. Переменной fruit присваивается значение "apple" и выполняется команда print(fruit ) 2. Переменной fruit присваивается значение "banana" и выполняется команда print(fruit ) 3. Переменной fruit присваивается значение "cherry" и выполняется команда print(fruit )

Вот как работает цикл:

Если в списке после слова in будет 10 значений, значит блок команд выполнится 10 раз.

Для каждого значения из списка_значений происходит две вещи:

  1. Переменной цикла (которая указана после слова for) присваивается очередное значение из списка_значений.
  2. Затем выполняется блок команд.

Еще пример:

Пример Пояснение

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for x in numbers:
    print(x)
Цикл выведет на экран числа:
1
2
3
4
5
6
7
8
9
10

8.2 Задание диапазона — range

В последнем примере вы могли видеть, что вывести на экран 10 чисел очень просто. Но что, если мы хотим выполнить цикл 100 раз? Или 1000?

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

Функция range() может быть использована несколькими способами, в зависимости от количества аргументов, передаваемых в неё.

Основы применения range():

Один аргумент: range(n) генерирует последовательность от 0 до n-1. Это полезно, когда нужно выполнить действие определённое количество раз.


for i in range(5):
    print(i)  # Выведет числа от 0 до 4

Два аргумента: range(start, stop) генерирует последовательность от start до stop-1. Это полезно для начала итерации с определённого числа.


for i in range(1, 6):
    print(i)  # Выведет числа от 1 до 5 

Три аргумента: range(start, stop, step) добавляет третий аргумент step, который определяет шаг между числами в последовательности.


for i in range(0, 10, 2):
    print(i)  # Выведет четные числа от 0 до 8  

Обратные циклы: range() может генерировать числа в обратном порядке, что позволяет выполнять обратные итерации.


for i in range(10, 0, -1):
    print(i)  # Выведет числа от 10 до 1 

Функция range() в сочетании с циклом for предоставляет гибкий инструмент для контроля итераций в Python. Понимание её возможностей помогает создавать более эффективные и понятные циклы, которые являются неотъемлемой частью любой программы.

8.3 Цикл по списку

Если вы хотите выполнить группу действий над разными значениями, функция range() вам не подходит, вы всегда можете объединить эти значения в список с помощью квадратных скобок. Общий вид этой операции выглядит так:


for переменная in [val1, val2, …, valN]:
    команда1
    команда1
    командаN

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

Пример Пояснение

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
                    
Цикл выведет на экран строки:
apple
banana
cherry

Вы можете указать в списке числа, причем прямо в цикле после слова in:

Пример Пояснение

for price in [0.99, 2.75, 0.25]:
    print(price)
Цикл выведет на экран числа:
0.99
2.75
0.25

В списке вообще можно перечислить объекты любого типа:

Пример Пояснение

for data in [0.99, "apple", -1, True]:
    print(data)
                
Цикл выведет на экран строки:
0.99
apple
-1
True
2
Задача
Модуль 1: Python Core, 3 уровень, 7 лекция
Недоступна
Циклотрон
Циклотрон
2
Задача
Модуль 1: Python Core, 3 уровень, 7 лекция
Недоступна
Хитрый раджа
Хитрый раджа
Комментарии (10)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
STRIK Уровень 4
10 февраля 2025
З першою задачкою без гугла не розібрався (Циклотрон)... можливо я не уважний, або це на логіку, але чому потрібно задавати значення 0 перед всім кодом, а потім "+=" ставити, щоб додати и вивелось чисто сумма... це десь пройшли та я провтикав, чи це просто інакше вирішення задачки? хоча там із варіантів що підходять, тільки цей) (коли вирішував сам, то просто перераховувало все... це все на що вистачило саме моїх знань) П.С.: останній варіант сподобався)) посилання яким користувався при вирішенні задачки: https://www-quora-com.translate.goog/How-do-I-add-the-first-100-natural-numbers-in-Python?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=rq
Дмитрий Уровень 7
19 января 2025
УСЛОВИЕ ЗАДАЧИ "Хитрый раджа" # Хитрый раджа # Напишите программу, которая вычисляет, сколько зерен окажется на каждой клетке шахматной доски, # если на первую клетку кладется 1 зернышко, на вторую — 2 зернышка, на третью — 4 зернышка и так далее. # Всего на шахматной доске 64 клетки. # Используйте цикл for и функцию range() для итерации по клеткам и функцию print() для вывода результата. # Пример: # Для первых трех клеток программа должна вывести: # Клетка 1: 1 зерна # Клетка 2: 2 зерна # Клетка 3: 4 зерна # ... Вопрос? где тут указано что я должен делать по формуле (2 ^ i (index) = ) ? Почему Вашу задачу нужно решать только Вашем способом? мое решение: n = 1 for i in range(1,65): print(f"Клетка {i}: {n}") n *= 2 вывод в консоль: Клетка 1: 1 Клетка 2: 2 Клетка 3: 4 Клетка 4: 8 Клетка 5: 16 Клетка 6: 32 ... Клетка 61: 1152921504606846976 Клетка 62: 2305843009213693952 Клетка 63: 4611686018427387904 Клетка 64: 9223372036854775808
Simona Hub Уровень 6
26 декабря 2024
задачки не для начинающих конечно!! подсказка может кому поможет: по условию задачи первой клетке кладется 1 зернышко, на второй — 2 зернышка, на третьей — 4 зернышка и так далее: На клетке 1: (2^0 = 1) На клетке 2: (2^1 = 2) На клетке 3: (2^2 = 4) На клетке 4: (2^3 = 8) итд индекс клетки, начиная с 0 ....
NatashaQuinn Уровень 4
23 декабря 2024
"Программа должна использовать функцию range() для определения диапазона итерации от 0 до 63 включительно." - почему не range (1, 65)? Почему такой вариант не засчитывает?
Simona Hub Уровень 6
26 декабря 2024
1) можно использовать цикл range с одним параметром и не заморачиваться for i in range.... 2) распечатай свои варианты циклов for и увидишь разницу
Roman Уровень 5
21 декабря 2024
Агонь
Mr.Robot Уровень 11 Expert
17 декабря 2024
Решается в 2 строки ) Сбило в тексте 0, 63 - так и поставил сходу не подумав. Да только это степени двойки имелись ввиду а не границы диапазона )
Vitalii Уровень 10
13 декабря 2024
Интересное задание)
Zlopyhatel Уровень 11
8 декабря 2024
Хитрый раджа - сделайте как хотите, но все будет неправильно. Правильно - только как мы написали. Но мы вам не расскажем, как правильно, вы просто посмотрите ответ и идите... ну сами знаете куда. Фу такими учителями быть, так неправильно и не честно
UnknownReboot Уровень 16
13 декабря 2024
Тоже просидел неделю за этой задачей, хотя прошел курс Java, как бы привык что надо в мелочах смотреть на условие, вплоть до лишних пробелов. Друг работает программистом, решил задачу за пять минут, самым эффективным сопособом.