Ta strona wykorzystuje ciasteczka ("cookies") w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Czy wyrażasz na to zgodę?

Czytaj więcej
< All Topics
Print

Instrukcje

Instrukcja warunkowa

 

We wszystkich językach podstawą programowania są instrukcje warunkowe oraz pętle. W Pythonie ich składnia nie odbiega od standardów. Posiada ona następującą budowę:

if warunek:
    instrukcja 1.1
    instrukcja 1.2
    ...
elif warunek:
    instrukcja 2.1
    instrukcja 2.2
    ...
elif warunek:
    instrukcja 3.1
    instrukcja 3.2
    ...
else:
    instrukcja 3.1
    instrukcja 3.2
    ...

Instrukcja warunkowa umożliwia wykonanie innych instrukcji tylko wtedy gdy warunek je poprzedzający jest prawdą. Programy używające jej wyglądają następująco:

a=7
if a>0:
    print('a jest dodatnie')
a=7
b=-5
if (a<0 and b<0):
    print('a i b ujemne')
elif (a<0 and b>0):
    print('a ujemne i b dodatnie')
elif (a>0 and b<0):
    print('a dodatnie i b ujemne')
elif (a>0 and b>0):
    print('a i b dodatnie')
a=7
b=-5
if a<0:
    print('a ujemne')
elif a>0:
    print('a dodatnie')
else:
    print('a=0')
>>>
a jest dodatnie
>>>
a dodatnie i b ujemne
>>>
a dodatnie

Wynikiem działania programu są odpowiednie komunikaty.

Złożone warunki pisane po if lub elif muszą być napisane w nawiasie.

Przy pisaniu instrukcji w ‘Pythonie’ istotną rolę odgrywają wcięcia kodu (spacje na początku linijki) i ich brak. Nawet prosta instrukcja przypisania: ‘a=7’ nie będzie wykonana, gdy przed a znajdzie się spacja. Z drugiej strony przy pisaniu instrukcji wielolinijkowych, linijka która bezpośrednio wykorzystuje wynik instrukcji wyższej musi być zaopatrzona w co najmniej jedną spację więcej. W następujących programach oba kody pracują tak samo:

a=7
b='kłam'
if b=='kłam':
    if a<0: print('a jest dodatnie')
    elif a>0: print('a jest ujemne')
else:
    if a<0: print('a jest ujemne')
    elif a>0: print('a jest dodatnie')
a=7
b='kłam'
if b=='kłam':
    if a<0:
        print('a jest dodatnie')
    elif a>0:
        print('a jest ujemne')
else:
    if a<0:
        print('a jest ujemne')
    elif a>0:
        print('a jest dodatnie')
>>>
a jest ujemne
>>>
a jest ujemne

IDLE Pythona oraz Thonny proponują głębsze wcięcia kodu złożone z 4 spacji. Nie jest to obowiązkowe.

Przy jednolinijkowych instrukcjach można je napisać w tej samej linijce co ‘if warunek:’, ‘elif warunek:’ albo ‘else:’. Nie mogą to jednak być kolejne instrukcje warunkowe. Kod napisany w drugim programie jest dopuszczalny, ale próba napisania “if b==”kłam”: if…” kończy się komunikatem o błędzie.

Instrukcja warunkowa z elif działa tak, jak instrukcja wyboru znana z innych języków programowania. Oznacza to, że sprawdzane są wszystkie warunki, a dopiero potem dochodzi do wykonania instrukcji. Ma to znaczenie gdy instrukcje zmieniają zmienne występujące w warunkach.

a=7
if a>0:
    a=a-10
elif a<0:
    a=a+10
else:
    a=1
print(a)
>>>
a=-3

Wynik -3 wskazuje, że pierwsza instrukcja nie wpłynęła na odczyt wartości a warunku po elif.

Wcięcia kodu są wskazówką dla IDLE Pythona, kiedy ma się zacząć wykonywać kilkulinijkowa instrukcja. Trzeba w tym celu kilkakrotnie nacisnąć klawisz enter. W Thonny zawsze uruchamiany jest jakiś skrypt, zatem takie kilkakrotne naciskanie enter nie jest potrzebne.

 

 

Instrukcja iteracyjna for

 

Instrukcje iteracyjne występują we wszystkich językach programowania i są bardzo często używane. Jej składnia w Pythonie wygląda następująco:

for 'iterator' in 'lista'
    instrukcja 1
    instrukcja 2
    ...
    break
    continue

Opcje break i continue bardzo rzadko wykonywane są podczas iteracji. Nie są obowiązkowe.

W programach iteracja wygląda następująco:

for i in [2,3,5,7,11,13]:
    print(i,' jest liczba pierwszą')
for i in range(6):
    if i % 2 == 0:
        print(i,' jest liczba parzystą')
    else:
        print(i,' jest liczba nieparzystą')
for i in range(5,10):
    sum_il=0
    for j in [4,7,11]:
        sum_il=sum_il+i*j
    print(sum_il)
>>>
2 jest liczba pierwszą
3 jest liczba pierwszą
5 jest liczba pierwszą
7 jest liczba pierwszą
11 jest liczba pierwszą
13 jest liczba pierwszą
>>>
0 jest liczba parzystą
1 jest liczba nieparzystą
2 jest liczba parzystą
3 jest liczba nieparzystą
4 jest liczba parzystą
5 jest liczba nieparzystą
>>>
110
132
154
176
198

Instrukcja for to najlepszy sposób, by za pomocą jednej instrukcji print() wyświetlić wiele wyników.

Instrukcja for także jest wrażliwa na wcięcia. Wystarczy porównać wyniki następujących programów:

for i in range(5,8):
    sum_il=0
    for j in [4,7,11]:
        sum_il=sum_il+i*j
    print(sum_il)
for i in range(5,8):
    sum_il=0
    for j in [4,7,11]:
        sum_il=sum_il+i*j
print(sum_il)
for i in range(5,8):
    sum_il=0
    for j in [4,7,11]:
        sum_il=sum_il+i*j
        print(sum_il)
>>>
110
132
154
>>>
154
>>>
20
55
110
24
66
132
28
77
154

Pierwszy z programów daje 3 wyniki, drugi 1 wynik, trzeci 9 wyników.

Kiedy iteracja z jakiś powodów powinna zostać przerwana przed uzyskaniem przez iterator końcowego wyniku można zastosować opcje break albo continue. Najczęściej poprzedza je instrukcja warunkowa wskazująca kiedy pętla powinna zostać przerwana. Przerwanie dotyczące wszystkich instrukcji po tym jak warunek przyjmie wartość False uzyskamy stosując opcję break. Natomiast gdy tylko pomijamy instrukcje, dla których warunek ma wartość false stosujemy opcję continue.

for i in range(5,10):
    sum_il=0
    for j in [2,1,0,-1,-2,-3]:
        if j is not 0:
            sum_il=sum_il+i/j
        else:
            break
    print(sum_il)
for i in range(5,10):
    sum_il=0
    for j in [2,1,0,-1,-2,-3]:
        if j is not 0:
            sum_il=sum_il+i/j
        else:
            continue
    print(sum_il)
>>>
7.5
9.0
10.5
12.0
13.5
>>>
-1.6666666666666667
-2.0
-2.3333333333333335
-2.6666666666666665
-3.0

Programy wygenerowały różne wyniki, choć różniły się wyłącznie opcją przerywania. Break powodował wyjście z pętli wewnętrznej bez sprawdzania warunków dla kolejnych iteratorów. Continue natomiast pominęła tylko iterator dający False. W obu wypadkach zewnętrzna pętla for nie została przerwana dając ostatecznie 6 wyników.

 

Pętla while

Pętla while ma prostą budowę:

while warunek:
instrukcja 1...
instrukcja 2...
...
break
continue

Umożliwia ona wielokrotne wykonanie instrukcji dopóki warunek będzie wykazywał wartość TRUE. Aby pętla zakończyła się warunek musi być odpowiednio modyfikowany, by w końcu uzyskał wartość “False”. Instrukcje break i continue nie są obowiązkowe.

Pętla while może zastępować pętlę for. Obie poniżej pokazane instrukcje wyliczają sumę liczb 1+2+3+…+100. Widać, że pętla for jest krótsza niż pętla while.

suma=0
for i in range(1,100):
    suma=suma+i
print(suma)
suma=0
i=1
while i<100:
    suma=suma+i
    i=i+1
print(suma)
>>>
4950 
>>>
4950 

Z drugiej strony pętla while umożliwia wykonanie zmiennej liczby powtórzeń instrukcji w zależności od ich wartości. Np. umożliwia znalezienie największego n dla którego suma 1+2+…+n jest mniejsza od 1000.

suma=0
n=0
while suma<1000:
    n=n+1
    suma=suma+n
print(n,' ',suma)
print(n-1,' ',suma-n)
>>>
45 1035
44 990

Przerywanie zastosowane w pętli w odpowiednim miejscu pozwala na skrócenie obliczeń o jeden obrót pętli. W przypadku długich programów i wielu instrukcji wykonywanych podczas jednego obrotu pętli może to mieć znaczenie.

suma=0
n=0
while suma<1000:
    if suma+n+1>1000:
        break
    else:
        n=n+1
        suma=suma+n
print(n,' ',suma)
>>>
44 990

W Pythonie nie ma innych instrukcji poza wymienionymi i wszystkie programy pisze się za pomocą wymienionych. W rezultacie dość łatwo jest nauczyć się tego języka programowania.

Spis treści