Основы программирования на Python В седьмом уроке был рассмотрен цикл while. Однако это не единственный способ организации в языке Python повторения группы выражений. В программах, написанных на Питоне, широко применяется цикл for, который представляет собой цикл обхода заданного множества элементов (символов строки, объектов списка или словаря) и выполнения в своем теле различных операций над ними. Например, если имеется список чисел, и необходимо увеличить значение каждого элемента на две единицы, то можно перебрать список с помощью цикла for, выполнив над каждым его элементом соответствующее действие. >>> spisok = [0,10,20,30,40,50,60,70,80,90] >>> i = 0 >>> for element in spisok: spisok[i] = element + 2 i = i + 1 >>> spisok [2, 12, 22, 32, 42, 52, 62, 72, 82, 92] >>> В примере переменная i нужна для того, чтобы записать изменившееся значение элемента в список. В ней хранится значение индекса очередного элемента списка. В то время, как переменная element связывается со значением очередного элемента данных. В заголовке цикла for происходит обращение очередному элементу списка. В теле цикла элементу с индексом i присваивается сумма значения текущего (обрабатываемого) элемента и двойки. Далее индекс увеличивается на единицу, а поток выполнения программы переходит снова в заголовок цикла for, где происходит обращение к следующему элементу списка. Когда все элементы обработаны цикл for заканчивает свою работу. Отсутствие очередного элемента является условием завершения работы цикла for (для сравнения: в цикле while условием завершения служит результат false логического выражения в заголовке). Еще один момент: если счетчик не увеличивать на единицу (выражение i = i + 1), то не смотря на то, что все элементы списка будут обработаны, результат все время будет присваиваться первому элементу списка (с индексом 0). С таким же успехом перебирать можно и строки, если не пытаться их при этом изменять: >>> stroka = "привет" >>> for bukva in stroka: print(bukva, end=' * ') п * р * и * в * е * т * >>> Цикл for используется и для работы со словарями: >>> d = {1:'one',2:'two',3:'three',4:'four'} >>> for key in d: d[key] = d[key] + '!' >>> d {1: 'one!', 2: 'two!', 3: 'three!', 4: 'four!'} >>> Цикл for широко используется в языке программирования Python, т.к. является важным инструментом при обработки структур данных. Также следует запомнить, что цикл for в Питоне особенный. Он не является аналогом циклов for во многих других языках программирования, где представляет собой, так называемый, цикл со счетчиком. Практическая работа
Пример выполнения практической работы>>> # задание 1 >>> list1 = ['hi','hello','good morning','how do you do'] >>> for i in list1: print(i) hi hello good morning how do you do >>> # задание 2 >>> for i in list1: for j in i: print(j,end='.') print() h.i. h.e.l.l.o. g.o.o.d. .m.o.r.n.i.n.g. h.o.w. .d.o. .y.o.u. .d.o. >>> # задание 3 >>> list2 = [56,78,45,23] >>> i = 0 >>> for a in list2: list2[i] = float(a) i = i + 1 >>> list2 [56.0, 78.0, 45.0, 23.0] >>> |
|||


Указание дополнительных примеров
А если мне нужно сделать бесконечный цикл?
А если мне нужно сделать цикл сто раз?
Что я буду сто раз вбивать (0,1,2,3)?
Почему эти примеры не указаны?
)
Для бесконечного цикла обычно используется цикл while, а не for. Например, вот программа с ошибкой (не изменяется значение переменной
a), приводящая к зацикливанию:Можно еще проще. Любое константное значение, не равное нулю, интерпретируется как true. Поскольку изменить константу нельзя, то цикл не может прервать своего выполнения:
А вот цикл "вечный бездельник":
Инструкция pass ничего не делает, но цикл постоянно работает.
Если нужно прокрутить цикл определенное количество раз, можно использовать функцию range. Например:
проблема с end=' * '
Не получается вывод в строку
Я так понимаю это от того, что у меня установлен версия 2.7, а не 3.0. Что делать то?
for bukva in stroka: print
Обратите внимание на запятую в конце инструкции print. Именно она запрещает переход на новую строку в python2.x
Обратите внимание на запятую в конце инструкции print. PS."Влад"
А что необходимо добавить вместо запятой в версии Python 3.2.2?
version 2.7
version 3.2
Чтобы функция print() не
Чтобы функция
print()не создавала новую строку, надо использовать параметрendс любым строковым значением, например пробелом:Результат:
А в последнем задании...
А в последнем задании... зачем
list2[i] = float (a)?Можно ведь
У меня такой же результат получился...
Ведь цикл начинает обход с [s]первого[/s] нулевого элемента. и кому-нибудь помочь
А при необходимости указания начала обхода можно задать срез в заголовке цикла. (for a in list2[1:] - со второго элемента списка)
З.ы. столько вопросов было.. пока писал, все решил)
извините, что умничаю) Пытаюсь закрепить знания )
Между этим кодом list =
Между этим кодом
и вот этим
разница есть.
В первом случае список list меняется, т.е. там уже будет содержаться [34.0, 11.0, 78.0, 52.0, 12.0]. Во втором случае list не изменяется, измененные значения просто выводятся на экран и не сохраняются в программе. Бывает, что это как раз и требуется. Все зависит от ситуации.
Вопрос к уроку 12
Помогите, пожалуйста, разобраться:
1. Создаем список и связываем его с x
2. Определяем переменную i как числовую и равную 0
3. Для каждого y в списке x сделать:
4. Элемент i списка x равен y + 2
5. Увеличиваем i = i +1
Переменная y нигде не задается, как так? Момент с этой переменной больше всего и непонятен, если честно.
Переменная i это положение члена списка, поэтому заранее и задали 0, чтобы начать с первого?
После for ставится переменная
После for ставится переменная (любая), которая при каждой итерации (обороте цикла) ссылается на очередной элемент последовательности (списка, в данном случае). Переменные в Python не объявляются в принципе. Они только обязательно должны связаны с каким-нибудь значением (ссылаться на него). В цикле for переменная y как раз связывается с очередным элементом последовательности. Она не "пустая" как может показаться.
Другой пример:
При первой итерации letter = 'a', при второй letter = 'b' и т.д.
Да. Индексация в Питоне начинается с нуля.
В данном случае переменная-индекс необходима, т.к происходит изменение списка. Если этого не требуется, то она не нужна. Например, надо посчитать сумму элементов и сохранить ее в другой переменной, а список не менять:
Здесь переменная sum равна 0 по причине того, что она должна быть связана с каким-нибудь значением, чтобы затем в ней можно было сохранить сумму. Она не обозначает индекс и не обязательно изначально должна быть равна нулю.