Pętla for
Pętla for
Zaczniemy od pętli for. Charakteryzuje się ona tym że z góry wiemy ile razy się wykona. Zanim jednak zaczniemy warto umówić jak to wygląda for zmienna in range(start, stop, krok):. Jak zauważyłeś składa się ona z 6 elementów. Słowa kluczowego for, zmiennej na której będziemy pracować, funkcji range a w niej wartości początkowej (start), kroku czyli o ile wartość początkowa będzie się zmieniała za każdym powtórzeniem oraz stopu czyli kiedy należy przestać. Najłatwiej będzie wytłumaczyć jej działanie na jakimś prostym przykładzie.
for i in range(0,10,1): #kolejno start stop krok print(i) #wypisujemy zmienną "i"
Program wypisze kolejno liczby od 0 do 9. Wartość początkowa pętli jest podana (przedział domknięty) a następnie pętla wykonuje się aż zmienna i nie będzie równa 10 (przedział otwarty). Warto pamiętać o tym żeby zawsze wstawiać dwukropek na końcu tak jak miało to miejsce przy instrukcjach warunkowych. Ten zapis można jeszcze trochę skrócić, mianowicie krok nie jest potrzebny ponieważ domyślnie jego wartość zawsze wynosi 1.
for i in range(10,0,-1): print(i)
Otrzymamy odwrotny efekt. Pętla wypisze liczby malejąco zaczynając od 10 a kończąc na 1. W tym przypadku krok równy -1 był już konieczny do zapisania. Przejdźmy do kolejnego przykładu
print("Podaj 5 liczb") suma = 0 for i in range(5,0,-1): print(i, end =". ") #drugim argumentem jest inforamcja o końcu linii liczba = int(input()) suma = suma + liczba #sumujemy pobrane wartości srednia = suma / 5 #obliczamy średnią print("Srednia wynosi ", srednia) #wyświetlamy zmienną średnia
Tak naprawdę w tym przykładzie nie dzieje się nic nowego z wyjątkiem 4 linijki. Funkcja print oprócz wypisania zmiennej „i” ma jeszcze jeden parametr a dokładniej mówiąc end=”. „. Powoduje to że po wypisaniu zmiennej „i” program nie przechodzi do nowej linii tylko wypisuje łańcuch znaków w cudzysłowiu. Domyślna wartość end=”\n” co powoduje każdorazowe przejście do nowej linijki. Watro mieć ten szczegół na uwadze ponieważ w przyszłości może on tam oszczędzić niepotrzebnej frustracji. Rzućmy okiem teraz na jeszcze jeden przykład. Poniżej fragment kodu z instrukcją warunkową.
licznik =0 for i in range(0,5): liczba = int(input("Podaj liczby parzyste: ")) if(liczba % 2 == 0): #modulo (reszta z dzielenia) print(":)") licznik = licznik+1 else: print(":(") print("Podales ", licznik, "parzystych i nieparzystych", 5-licznik)
Taki prosty fragment kodu. Być może zastanawiasz się co oznacza zapis liczba%2 == 0. Należy czytać to w ten sposób. Jeżeli reszta z dzielenia zmiennej liczba przez 2 wynosi 0 to…. Modulo jest bardzo przydatne podczas pisania algorytmów i nie tylko. Jeżeli się zastanowić to nasz program 0 uznaje jako liczbę parzystą co oczywiście nie jest prawdą. Jak Twoim zdaniem należałby poprawić ten błąd?
Instrukcja break i continue
Bardzo ważne i przydane instrukcje które są nierozłącznym elementem pętli. Słowo kluczowe break „kończy” pętle, bezwarunkowo wychodząc z jej ciała. Continue zaś przechodzi do kolejnego obiegu pętli pomijając wszystkie następne instrukcje które są w kolejce. Aby lepiej to zrozumieć warto spojrzeć na ilustracje pomocnicze. Czerwona strzałka wskazuje miejsce do którego kompilator „przeskakuje” po natknięciu się na instrukcje break lub continue. Na ilustracji pętla for z języka C/C++ nie zmienia to faktu że działa ona tak samo jak w Pythonie.
print("0 - BREAK 1 - CONTINUE") for i in range(1,999): print("\nObieg petli ",i) wybor = int(input()) if wybor == 1: continue #przejście do 3 linijki kodu if wybor == 0: break #przejście do 12 linijki kodu print("Instukcja nr.1") print("Instukcja nr.2") print("Instukcja nr.3") print("Koniec petli")
Przetestuj działanie tego kodu. Lepiej zrozumiesz jak działają te instrukcje i jaki mają potencjał w programowaniu.
Podsumowanie
Warto abyś zapamiętał że kolejność składni w pętli jak najbardziej ma znaczenie. Zawsze na początku jest start później warunek i na końcu krok. Nie wiem czy zwróciłeś uwagę na to że przecinek występuje po starcie i warunku po kroku już nie ma przecinka. Pamiętaj również że tak samo jak to miało miejsce w instrukcjach warunkowych w pętlach również jest dwukropek na końcu. Mówię to ponieważ na początku możesz o tym zapominać i ciężko będzie Ci znaleźć błąd w kodzie. Pętla for użyta w odpowiedni sposób potrafi ułatwić nam mnóstwo pracy i daje niesamowite możliwości.