PROGRAMOWANIE I ALGORYTMY

Pętle w Python


powrót

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

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
    .....

Przykład 1

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

Przykład 2

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

Pętla while-else

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
    .....

Przykład 3

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

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
    ....

Przykład 4

Wypisz wszystkie liczby naturalne w porządku rosnącym z przedziału [0..10].

for i in range(11):
    print(i)
Wyjście
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).

Przykład 5

Wypisz wszystkie liczby naturalne w porządku rosnącym z przedziału [2..10].

for i in range(2, 11):
    print(i)
Wyjście
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].

Przykład 6

Wypisz wszystkie liczby naturalne parzyste w porządku rosnącym z przedziału [4..12].

for i in range(2, 13, 2):
    print(i)
Wyjście
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.

Przykład 7

Wypisz wszystkie elementy listy: ["Adam", "Iwona", "Kamila", "Marcin"].

lista = ["Adam", "Iwona", "Kamila", "Marcin"]
for imie in lista:
    print(imie)
Wyjście
Adam
Iwona
Kamila
Marcin

Instrukcja break

Wywołanie instrukcji break w pętli while lub for spowoduje natychmiastowe jej przerwanie.

Przykład 8

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)
Przykładowe wejście/wyjście
Podaj liczbę: 45
1
3
5
9
15
45

Instrukcja continue

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.

Przykład 9

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)
Przykładowe wejście/wyjście
Podaj początek przedziału: 3
Podaj koniec przedziału: 10
3
5
7
9