Водич за Пајтон 2.6/For петље
Овде је нова вежба куцања за ово поглавље:
једандодесет = range(1, 11)
for бројање in једандодесет:
print бројање
и увек присутни излаз:
1 2 3 4 5 6 7 8 9 10
Излаз изгледа страшно познато, али код програма изгледа другачије. Прва линија користи range
функцију. Функција range
узима два аргумента као range(почетак, крај)
. почетак
је први број који се ствара. крај
је за један већи од последњег броја. Имајте на уму да се овај програм могао урадити на краћи начин:
for бројање in range(1, 11):
print бројање
Ево неких примера који показују шта се дешава са range
командом:
>>> range(1, 10) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(-32, -20) [-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21] >>> range(5,21) [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] >>> range(5) [0, 1, 2, 3, 4] >>> range(21, 5) []
Следећа линија for бројање in једандодесет:
користи for
контролну структуру. for
контролна структура изгледа као for променљива in листа:
. листа
кроз кроз коју је прошао почевши од првог елемента листе и иде до последњег. Као што for
иде кроз сваки елемент листе ставља сваки у променљива
. То дозвољава да се променљива
која се користи у сваком сукцесивном времену покреће кроз for
петљу. Овде је други пример (не морате да га куцате) за приказивање:
демолиста = ['живот', 42,'универзум', 6, 'и', 9, 'све']
for члан in демолиста:
print "Тренутни члан је:",
print члан
Излаз је:
Тренутни члан је: живот Тренутни члан је: 42 Тренутни члан је: универзум Тренутни члан је: 6 Тренутни члан је: и Тренутни члан је: 9 Тренутни члан је: све
Приметите како for
петља иде кроз и поставља члан сваком елементу листе. Обратите пажњу како, ако не желите print
команда да иде до следеће линије додај зарез на крају изјаве(нпр. Ако желите да одштампате нешто друго на тој линији). Па, за шта је добра for
петља? Прва употреба је да иде кроз све елементе листе и уради нешто са сваким од њих. Ево га брз начин да саберете све елементе:
листа = [2, 4, 6, 8]
збир = 0
for број in листа:
збир = збир + број
print "Збир је:", збир
Са једноставним излазом:
Збир је: 20
Или можете да напишете програм да бисте сазнали да ли постоје дупликати у листи, овако програм ради:
листа = [4, 5, 7, 8, 9, 1, 0, 7, 10]
листа.sort()
прет = листа[0]
del листа[0]
for члан in листа:
if прет == члан:
print "Дупликат", прет, "је нађен"
прет = члан
И за добро мерење:
Дупликат 7 је нађен
Добро, па како се то ради? Овде је специјална верзија отклањања грешака која ће вам помоћи да разумете (не морате да куцате ово):
л = [4, 5, 7, 8, 9, 1, 0, 7, 10]
print "л = [4, 5, 7, 8, 9, 1, 0, 7, 10]", "\t\tл:", л
л.sort()
print "л.sort()", "\t\tл:", л
прет = л[0]
print "прет = л[0]", "\t\tпрет:", прет
del l[0]
print "изб л[0]", "\t\tл:", л
for члан in л:
if прет == члан:
print "Дупликат", прет, "пронађен"
print "if прет == члан:", "\t\tпрет:", прет, "\tчлан:", члан
прет = члан
print "прет = члан", "\t\tпрет:", прет, "\tчлан:", члан
Са излазом који је:
л = [4, 5, 7, 8, 9, 1, 0, 7, 10] л: [4, 5, 7, 8, 9, 1, 0, 7, 10] л.sort() л: [0, 1, 4, 5, 7, 7, 8, 9, 10] прет = л[0] прет: 0 del л[0] л: [1, 4, 5, 7, 7, 8, 9, 10] if прет == члан: прет: 0 члан: 1 прет = члан прет: 1 члан: 1 if прет == члан: прет: 1 члан: 4 прет = члан прет: 4 члан: 4 if прет == члан: прет: 4 члан: 5 прет = члан прет: 5 члан: 5 if прет == члан: прет: 5 члан: 7 прет = члан прет: 7 члан: 7 Дупликат 7 пронађен if прет == члан: прет: 7 члан: 7 прет = члан прет: 7 члан: 7 if прет == члан: прет: 7 члан: 8 прет = члан прет: 8 члан: 8 if прет == члан: прет: 8 члан: 9 прет = члан прет: 9 члан: 9 if прет == члан: прет: 9 члан: 10 прет = члан прет: 10 члан: 10
Разлог зашто сам ставио много print
у коду је тај да можете да видите шта се дешава у свакој линији. (Уосталом, ако не можете да схватите зашто програм не ради, покушајте да много штампате изјаве тако да можете да видите шта се дешава.) Прво програм почиње са досадном старом листом. Следеће програм сортира листу. То је зато што се неки дупликати стављају један поред другог. Програм затим иницијализује прет
(ходну) променљиву. Следеће је, први елемент листе се брише, тако да није погрешно мислио да је прва ставка дупликат. Затим for
петља је нестала. Свака ставка листе се проверава да се види да ли је иста као претходна. Ако јесте дупликат је пронађен. Вредност прет
се онда мења тако да се следећи пут for
покреће кроз прет
и то је претходна ставка у тренутну. Наравно, утврђено је да је 7 дупликат. (Приметите како се \t
користи за штампање таба.)
Други начин да користите for
петље је да урадите нешто одређени број пута. Овде је неки код за штампање првих 9 бројева Фибоначијевих серија:
a = 1
b = 1
for c in range(1, 10):
print a,
n = a + b
a = b
b = n
са изненађујућим излазом:
1 1 2 3 5 8 13 21 34
Све што се може урадити са for
петљама такође се може одрадити са while
петљама али for
петља нам дозвољава да на лакши начин прођемо кроз све елементе листе или да урадимо нешто одређени број пута.