Как пользоваться for в python
Цикл for , также называемый циклом с параметром, в языке Питон богат возможностями. В цикле for указывается переменная и множество значений, по которому будет пробегать переменная. Множество значений может быть задано списком, кортежем, строкой или диапазоном.
Вот простейший пример использования цикла, где в качестве множества значений используется кортеж:
i = 1 for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet': print('#', i, ' color of rainbow is ', color, sep = '') i += 1
В этом примере переменная color последовательно принимает значения ‘red’ , ‘orange’ и т.д. В теле цикла выводится сообщение, которое содержит название цвета, то есть значение переменной color , а также номер итерации цикла число, которое сначала равно 1, а потом увеличивается на один (инструкцией i += 1 с каждым проходом цикла.
Инструкция i += 1 эквивалентна конструкции i = i + 1 (это просто сокращенная запись). Такую сокращенную запись можно использовать для всех арифметических операций: *= , -= , /= , %= .
В списке значений могут быть выражения различных типов, например:
for i in 1, 2, 3, 'one', 'two', 'three': print(i)
При первых трех итерациях цикла переменная i будет принимать значение типа int , при последующих трех — типа str .
2. Функция range
Как правило, циклы for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного.
Для повторения цикла некоторое заданное число раз n можно использовать цикл for вместе с функцией range :
for i in range(4): # равносильно инструкции for i in 0, 1, 2, 3: # здесь можно выполнять циклические действия print(i) print(i ** 2) # цикл закончился, поскольку закончился блок с отступом print('Конец цикла')
В качестве n может использоваться числовая константа, переменная или произвольное арифметическое выражение (например, 2 ** 10 ). Если значение n равно нулю или отрицательное, то тело цикла не выполнится ни разу.
Функция range может также принимать не один, а два параметра. Вызов range(a, b) означает, что индексная переменная будеть принимать значения от a до , то есть первый параметр функции range , вызываемой с двумя параметрами, задает начальное значение индексной переменной, а второй параметр — первое значение, которое индексная переменная принимать не будет. Если же a ≥ b , то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от 1 до n можно воспользоваться следующей программой:
sum = 0 n = 5 for i in range(1, n + 1): sum += i print(sum)
В этом примере переменная i принимает значения 1, 2, . n , и значение переменной sum последовательно увеличивается на указанные значения.
Наконец, чтобы организовать цикл, в котором индексная переменная будет уменьшаться, необходимо использовать функцию range с тремя параметрами. Первый параметр задает начальное значение индексной переменной, второй параметр — значение, до которого будет изменяться индексная переменная (не включая его!), а третий параметр — величину изменения индексной переменной. Например, сделать цикл по всем нечетным числам от 1 до 99 можно при помощи функции , а сделать цикл по всем числам от 100 до 1 можно при помощи .
Более формально, цикл при d > 0 задает значения индексной переменной i = a , i = a + d , i = a + 2 * d и так для всех значений, для которых i < b . Если же d < 0 , то переменная цикла принимает все значения i >b .
3. Настройка функции print()
По умолчанию функция print() принимает несколько аргументов, выводит их через пробел, после чего ставит перевод строки. Это поведение можно изменить, используя именованные параметры sep (разделитель) и end (окончание).
print(1, 2, 3) print(4, 5, 6) print(1, 2, 3, sep=', ', end='. ') print(4, 5, 6, sep=', ', end='. ') print() print(1, 2, 3, sep='', end=' -- ') print(4, 5, 6, sep=' * ', end='.')
Циклы for и while, операторы break и continue, волшебное слово else

В этой статье я расскажу о циклах for и while, операторах break и continue, а также о слове else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.
Цикл while
While — один из самых универсальных циклов в Python, поэтому довольно медленный. Выполняет тело цикла до тех пор, пока условие цикла истинно.
Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быстрее цикла while. Этот цикл проходится по любому итерируемому объекту (например строке или списку), и во время каждого прохода выполняет тело цикла.
Оператор continue
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while)
Оператор break
Оператор break досрочно прерывает цикл.
Слово else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же «естественным» образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Цикл for
Цикл for в языке программирования Python предназначен для перебора элементов структур данных и других составных объектов. Это не цикл со счетчиком, каковым является for во многих других языках.
Что значит перебор элементов? Например, у нас есть список, состоящий из ряда элементов. Сначала берем из него первый элемент, затем второй, потом третий и так далее. С каждым элементом мы выполняем одни и те же действия в теле for . Нам не надо извлекать элементы по их индексам, заботиться, на каком из них список заканчивается, и следующая итерация бессмысленна. Цикл for сам переберет и определит конец.
>>> spisok = [10, 40, 20, 30] >>> for element in spisok: . print(element + 2) . 12 42 22 32
После ключевого слова for используется переменная под именем element . Имя здесь может быть любым. Нередко используют i . На каждой итерации цикла for ей будет присвоен очередной элемент из списка spisok . Так при первой прокрутке цикла идентификатор element связан с числом 10, на второй – с числом 40, и так далее. Когда элементы в spisok заканчиваются, цикл for завершает свою работу.
С английского "for" переводится как "для", "in" как "в". Перевести конструкцию с языка программирования на человеческий можно так: для каждого элемента в списке делать следующее (то, что в теле цикла).
В примере мы увеличивали каждый элемент на 2 и выводили его на экран. При этом сам список конечно же не изменялся:
>>> spisok [10, 40, 20, 30]
Нигде не шла речь о перезаписи его элементов, они просто извлекались и использовались. Однако бывает необходимо изменить сам список, например, изменить значение каждого элемента в нем или только определенных, удовлетворяющих определенному условию. И тут без переменной, обозначающей индекс элемента, случаев не обойтись:
>>> i = 0 >>> for element in spisok: . spisok[i] = element + 2 . i += 1 . >>> spisok [12, 42, 22, 32]
Но если мы вынуждены использовать счетчик, то выгода от использования цикла for не очевидна. Если знать длину списка, то почему бы не воспользоваться while . Длину можно измерить с помощью встроенной в Python функции len() .
>>> i = 0 >>> while i < len(spisok): . spisok[i] = spisok[i] + 2 # или spisok[i] += 2 . i = i + 1 # или i += 1 . >>> spisok [14, 44, 24, 34]
Кроме того, с циклом while мы избавились от переменной element .
Функция range()
Теперь пришло время познакомиться со встроенной в Python функцией range() . "Range" переводится как "диапазон". Она может принимать один, два или три аргумента. Их назначение такое же как у функции randrange() из модуля random . Если задан только один, то генерируются числа от 0 до указанного числа, не включая его. Если заданы два, то числа генерируются от первого до второго, не включая его. Если заданы три, то третье число – это шаг.
Однако, в отличие от randrange() , функция range() генерирует не одно случайное число в указанном диапазоне. Она вообще не генерирует случайные числа. Она генерирует последовательность чисел в указанном диапазоне. Так, range(5, 11) сгенерирует последовательность 5, 6, 7, 8, 9, 10. Однако это будет не структура данных типа "список". Функция range() производит объекты своего класса – диапазоны:
>>> a = range(-10, 10) >>> a range(-10, 10) >>> type(a)
Несмотря на то, что мы не видим последовательности чисел, она есть, и мы можем обращаться к ее элементам:
>>> a[0] -10 >>> a[5] -5 >>> a[15] 5 >>> a[-1] 9
Хотя изменять их нельзя, так как, в отличие от списков, объекты range() относятся к группе неизменяемых:
>>> a[10] = 100 Traceback (most recent call last): File "", line 1, in TypeError: 'range' object does not support item assignment
Цикл for и range()
Итак, зачем нам понадобилась функций range() в теме про цикл for ? Дело в том, что вместе они образуют неплохой тандем. For как цикл перебора элементов, в отличие от while , позволяет не следить за тем, достигнут ли конец структуры. Не надо вводить счетчик для этого, изменять его и проверять условие в заголовке. С другой стороны, range() дает последовательность целых чисел, которые можно использовать как индексы для элементов того же списка.
>>> range(len(spisok)) range(0, 4)
Здесь с помощью функции len() измеряется длина списка. В данном случае она равна четырем. После этого число 4 передается в функцию range() , и она генерирует последовательность чисел от 0 до 3 включительно. Это как раз индексы элементов нашего списка.
Теперь "соединим" for и range() :
>>> spisok = [14, 44, 24, 34] >>> for i in range(len(spisok)): . spisok[i] += 2 . >>> spisok [16, 46, 26, 36]
Еще раз обратим внимание, в заголовке цикла for берутся элементы вовсе не списка, а объекта range .
Практическая работа
- Заполните список случайными числами. Используйте в коде цикл for, функции range() и randint() .
- Если объект range (диапазон) передать встроенной в Python функции list() , то она преобразует его к списку. Создайте таким образом список с элементами от 0 до 100 и шагом 17.
- В заданном списке, состоящем из положительных и отрицательных чисел, посчитайте количество отрицательных элементов. Выведите результат на экран.
- Напишите программу, которая заполняет список пятью словами, введенными с клавиатуры, измеряет длину каждого слова и добавляет полученное значение в другой список. Например, список слов – ['yes', 'no', 'maybe', 'ok', 'what'], список длин – [3, 2, 5, 2, 4]. Оба списка должны выводиться на экран.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
Синтаксис и возможности цикла for Python
Циклы python — for и while представляют собой операторы языка программирования, то есть операторы итерации, которые позволяют повторять код определенное количество раз.
Синтаксис цикла For
Как уже упоминалось ранее, цикл for в Python является итератором, основанным на цикле. Он проходит по элементам list и tuple, строкам, ключам словаря и другим итерируемым объектам.
В Python цикл начинается с ключевого слова for , за которым следует произвольное имя переменной, которое будет хранить значения следующего объекта последовательности. Общий синтаксис for. in в python выглядит следующим образом:
for in : else:
Элементы «последовательности» перебираются один за другим «переменной» цикла; если быть точным, переменная указывает на элементы. Для каждого элемента выполняется «действие».
Пример простого цикла for в Python:
>>> languages = ["C", "C++", "Perl", "Python"] >>> for x in languages: . print(x) . C C++ Perl Python >>>Блок else является особенным; в то время как программист, работающий на Perl знаком с ним, это неизвестная конструкция для программистов, которые работают на C и C++. Семантически он работает точно так же, как и в цикле while .
Он будет выполнен только в том случае, если цикл не был «остановлен» оператором break . Таким образом, он будет выполнен только после того, как все элементы последовательности будут пройдены.
Оператор прерывания в python — break
Если в программе цикл for должен быть прерван оператором break , цикл будет завершен, и поток программы будет продолжен без выполнения действий из else .
Обычно фразы break в pyton связаны с условными операторами.
edibles = ["отбивные", "пельмени", "яйца", "орехи"] for food in edibles: if food == "пельмени": print("Я не ем пельмени!") break print("Отлично, вкусные " + food) else: print("Хорошо, что не было пельменей!") print("Ужин окончен.")Если мы запустим этот код, получим следующий результат:
Отлично, вкусные отбивные Я не ем пельмени! Ужин окончен.Удалим «пельмени» из нашего списка еды и получим следующее:
Отлично, вкусные отбивные Отлично, вкусные яйца Отлично, вкусные орехи Хорошо, что не было пельменей! Ужин окончен.Оператор пропуска python — continue
Предположим, нам «пельмени» нам нужно просто пропустить и продолжить прием пищи. Тогда нужно использовать оператор continue , для перехода к следующему элементу.
В следующем маленьком скрипте python мы используем continue , чтобы продолжить, итерацию по списку, когда мы сталкиваемся с пельменями.
edibles = ["отбивные", "пельмени", "яйца", "орехи"] for food in edibles: if food == "пельмени": print("Я не ем пельмени!") continue print("Отлично, вкусные " + food) else: print("Ненавижу пельмени!") print("Ужин окончен.")Результат будет следующим:
Отлично, вкусные отбивные Я не ем пельмени! Отлично, вкусные яйца Отлично, вкусные орехи Ненавижу пельмени! Ужин окончен.Итерация по спискам с функцией range()
Если вам нужно получить доступ к индексам списка, не очевидно как использовать цикл for для этой задачи. Мы можем получить доступ ко всем элементам, но индекс элемента остается недоступным. Есть способ получить доступ как к индексу элемента, так и к самому элементу. Для этого используйте функцию range() в сочетании с функцией длины len() :