Instrukcja iteracyjna (potocznie pętla) pozwala powtórzyć pewien ciąg instrukcji skończoną ilość razy. W tym momencie zaczyna się prawdziwe programowanie i wykorzystanie potencjału komputera w dokonywaniu różnego rodzaju obliczeń. Większość algorytmów maturalnych realizowana jest za pomocą instrukcji iteracyjnych. Dzięki szybkim procesorom możemy wykonywać miliardy operacji w bardzo szybkim czasie.
Podsumowując: pętla służy do powtarzania pewnego fragmentu kodu skończoną ilość razy. Np. Jeśli chcesz wypisać tysiąc kolejnych liczb, użyjesz do tego pętli, która w dwóch linijkach rozwiąże problem.
W języku Python do dyspozycji mamy dwie instrukcje iteracyjne:
Pętla while w Python działa na takiej samej zasadzie jak w języku C++. Pętla ta powtarza instrukcje należące do jej bloku, tak długo, jak długo prawdziwy jest warunek (warunki) do niej przyporządkowany. Tworząc pętle while: musisz zadbać, aby liczba jej wywołań była skończona.
Struktura pętli while:
while warunek:
instrukcja_1_bloku_while
instrukcja_2_bloku_while
instrukcja_3_bloku_while
.....
Napisz program, który wyświetli sto kolejnych dodatnich liczb całkowitych.
x = 1
while x <= 100: # dopóki warunek będzie prawdziwy, powtórz poniższe instrukcje
print(x) # wypisz wartość zmiennej x
x = x + 1 # zwiększ wartość zmiennej x o 1
Wyznacz sumę cyfr podanej liczby naturalnej.
suma = 0
liczba = int(input("Podaj liczbę: "))
while liczba > 0:
suma += liczba % 10 # wyłuskaj cyfrę jedności
liczba //= 10 # skróć o cyfrę jedności
print(suma) # wypisz sumę cyfr liczby x
Podobnie jak w instrukcji warunkowej, możemy zastosować alternatywę dla sytuacji, gdy warunek będzie fałszywy. Zasada działania samej pętli while jest taka sama jak w przypadku bez else.
Struktura pętli while else:
while warunek:
instrukcja_1_bloku_while
instrukcja_2_bloku_while
instrukcja_3_bloku_while
.....
else:
intrukcja_1_dla_bloku_else
intrukcja_2_dla_bloku_else
intrukcja_3_dla_bloku_else
.....
Napisz program, który dla danego przedział [a..b] wypisze liczby naprzemiennie: a, b, a+1, b-1, ... np. dla przedziału [2..8] program powinien wypisać: 2 8 3 7 4 6 5.
a = int(input("Podaj początek przedziału: "))
b = int(input("Podaj koniec przedziału: "))
while a < b:
print(a)
print(b)
a += 1
b -= 1
else:
if a == b:
print(a)
Pętla for w języku Python, powtarza blok instrukcji określoną ilość razy. Podczas jej tworzenia, możemy określić ile razy ma się ona wykonać oraz co jaką wartość ma się zmieniać licznik.
Licznik pętli jest zmienną, która steruje pętlą.
Konstrukcja pętli for wygląda następująco:
for bierzacy_element in zbiór:
instrukcja_1_pętli_for
instrukcja_2_pętli_for
instrukcja_3_pętli_for
....
Wypisz wszystkie liczby naturalne w porządku rosnącym z przedziału [0..10].
for i in range(11):
print(i)
0
1
2
3
4
5
6
7
8
9
10
Wyjaśnienie.
Funkcja range(n) zwraca kolejne liczby całkowite z przedziału [0..n-1] (od zera do n - 1).
Wypisz wszystkie liczby naturalne w porządku rosnącym z przedziału [2..10].
for i in range(2, 11):
print(i)
2
3
4
5
6
7
8
9
10
Wyjaśnienie.
Funkcja range(a, b) zwraca kolejne liczby całkowite z przedziału [a..b-1].
Wypisz wszystkie liczby naturalne parzyste w porządku rosnącym z przedziału [4..12].
for i in range(2, 13, 2):
print(i)
2
4
6
8
10
12
Wyjaśnienie.
Funkcja range(a, b, progres) zwraca rosnący zbiór liczb całkowitych z przedziału [a, b - 1], począwszy od liczby a, a każda następna jest o progres większa (mniejsza) od poprzedniej.
Wypisz wszystkie elementy listy: ["Adam", "Iwona", "Kamila", "Marcin"].
lista = ["Adam", "Iwona", "Kamila", "Marcin"]
for imie in lista:
print(imie)
Adam
Iwona
Kamila
Marcin
Wywołanie instrukcji break w pętli while lub for spowoduje natychmiastowe jej przerwanie.
Napisz program, który wypisze wszystkie naturalne dzielniki podanej liczby naturalnej dodatniej.
x = int(input("Podaj liczbę: "))
for i in range(1, x):
if i > x//2: # jeśli przekroczymy wartość połowy liczby x, to nie ma co dalej szukać
break
if x % i == 0:
print(i)
print(x)
Podaj liczbę: 45
1
3
5
9
15
45
Wywołanie instrukcji continue w pętli while lub for spowoduje ponowienie działania pętli, pomijając instrukcje należące do bloku pętli, znajdujące się poniżej instrukcji continue.
Napisz program, który wypisze wszystkie całkowite nieparzyste liczby z przedziału [a..b].
a = int(input("Podaj początek przedziału: "))
b = int(input("Podaj koniec przedziału: "))
for i in range(a, b+1):
if i % 2 == 0: # jeśli liczba jest parzysta to uruchamiamy kolejną iterację pętli
continue
print(i)
Podaj początek przedziału: 3
Podaj koniec przedziału: 10
3
5
7
9