Spis treści:
- instrukcja warunkowa,
- operator warunkowy,
- zadanie.
Poprzednia lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)
Następna lekcja: Lekcja 4 (pętle)
Dzięki instrukcjom warunkowym programy uzyskują możliwość podejmowania decyzji. Od momentu ich użycia algorytmy przestają być liniowe. Pojawiają się w nich rozgałęzieniach i w zależności od przekazanych programowi danych część kodu może się w ogóle nie wykonać.
W powyższym diagramie (zapis blokowy algorytmu) widać rozgałęzienie. Gdy podana zostanie liczba nieujemna to nie zostanie wykonana operacja A = -A. Wypiszmy kroki powyższego algorytmu:
1. Wczytaj liczbę całkowitą A podaną przez użytkownika.
2. Jeżeli A jest mniejsze od 0 to idź do kroku 3 w przeciwnym wypadku idź do kroku 4.
3. Niech A stanie się -A
4. Wypisz wartość zmiennej A
Powyższy algorytm dzięki instrukcji warunkowej wyznacza wartość bezwzględną podanej przez użytkownika liczby całkowitej.
Powyższy algorytm zapisany w postaci skryptu będzie wyglądał następująco:
W powyższym kodzie widać jedną z ważnych cech języka Python. Jeżeli mamy do czynienia z blokiem instrukcji musi on być wcięty względem jego nadrzędnego bloku. W przypadku powyższego programu w linii 3 jest blok instrukcji (tym razem tylko jedna instrukcja), który ma zostać wykonany gdy wartość przechowywana w zmiennej A jest ujemna.
Teraz zajmiemy się problemem parzystości liczby dodatniej. W tym przypadku będą dwa możliwe zakończenia (komunikat "Tak" gdy liczba będzie parzysta i komunikat "Nie" w przeciwnym wypadku).
W powyższym programie test parzystości wykonany jest za pomocą działania modulo (reszta z dzielenia). Jeżeli reszta z dzielenia danej liczby przez dwa jest równa zero oznacza to, że poddana testowi liczba jest parzysta (jest wielokrotnością dwójki). W zależności od wyniku testu parzystości instrukcja w linii 3 lub instrukcja w linii 5 nie zostanie wykonana.
Analizując linie nr 2 z pierwszego i drugiego skryptu można zauważyć ogólną składnię instrukcji warunkowej if:
if testLogiczny:
blokInstrukcji
else:
blokInstrukcji
Pełna składnia tej instrukcji wygląda nieco inaczej:
if testLogiczny:
blokInstrukcji
elif testLogiczny:
blokInstrukcji
else:
blokInstrukcji
elif - pozwala dołożyć kolejny test logiczny do instrukcji warunkowej. Jest to element opcjonalny tak samo jak else. W przeciwieństwie do else sekcji elif może pojawić się więcej w jednej instrukcji warunkowej.
Powyższy skrypt przyjmuje trzy liczby całkowite i wskazuje, która z nich jest najmniejsza. Dodatkowo informuje, w której zmiennej ta liczba się znajduje.
Od Pythona w wersji 2.5 do dyspozycji programistów oddano operator warunkowy posiadający poniższą składnię:
wartosc_1 if testLogiczny else wartosc_2
Przykład wykorzystania operatora warunkowego:
Powyższy program wypisze wartość ze zmiennej a gdy jest ona mniejsza od wartości przechowywanej w zmiennej b. W przeciwnym wypadku wypisze wartość ze zmiennej b.
Poprzednia lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)
Następna lekcja: Lekcja 4 (pętle)
Zadanie
Jaka będzie odpowiedź poniższego skryptu?
Poprzednia lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)
Następna lekcja: Lekcja 4 (pętle)
- instrukcja warunkowa,
- operator warunkowy,
- zadanie.
Poprzednia lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)
Następna lekcja: Lekcja 4 (pętle)
Dzięki instrukcjom warunkowym programy uzyskują możliwość podejmowania decyzji. Od momentu ich użycia algorytmy przestają być liniowe. Pojawiają się w nich rozgałęzieniach i w zależności od przekazanych programowi danych część kodu może się w ogóle nie wykonać.
W powyższym diagramie (zapis blokowy algorytmu) widać rozgałęzienie. Gdy podana zostanie liczba nieujemna to nie zostanie wykonana operacja A = -A. Wypiszmy kroki powyższego algorytmu:
1. Wczytaj liczbę całkowitą A podaną przez użytkownika.
2. Jeżeli A jest mniejsze od 0 to idź do kroku 3 w przeciwnym wypadku idź do kroku 4.
3. Niech A stanie się -A
4. Wypisz wartość zmiennej A
Powyższy algorytm dzięki instrukcji warunkowej wyznacza wartość bezwzględną podanej przez użytkownika liczby całkowitej.
Powyższy algorytm zapisany w postaci skryptu będzie wyglądał następująco:
1 2 3 4 | A = int(raw_input()) if A < 0: A = -A print A |
W powyższym kodzie widać jedną z ważnych cech języka Python. Jeżeli mamy do czynienia z blokiem instrukcji musi on być wcięty względem jego nadrzędnego bloku. W przypadku powyższego programu w linii 3 jest blok instrukcji (tym razem tylko jedna instrukcja), który ma zostać wykonany gdy wartość przechowywana w zmiennej A jest ujemna.
Teraz zajmiemy się problemem parzystości liczby dodatniej. W tym przypadku będą dwa możliwe zakończenia (komunikat "Tak" gdy liczba będzie parzysta i komunikat "Nie" w przeciwnym wypadku).
1 2 3 4 5 | liczba = int(raw_input()) if liczba % 2 == 0: print "Tak" else: print "Nie" |
W powyższym programie test parzystości wykonany jest za pomocą działania modulo (reszta z dzielenia). Jeżeli reszta z dzielenia danej liczby przez dwa jest równa zero oznacza to, że poddana testowi liczba jest parzysta (jest wielokrotnością dwójki). W zależności od wyniku testu parzystości instrukcja w linii 3 lub instrukcja w linii 5 nie zostanie wykonana.
Analizując linie nr 2 z pierwszego i drugiego skryptu można zauważyć ogólną składnię instrukcji warunkowej if:
if testLogiczny:
blokInstrukcji
else:
blokInstrukcji
Pełna składnia tej instrukcji wygląda nieco inaczej:
if testLogiczny:
blokInstrukcji
elif testLogiczny:
blokInstrukcji
else:
blokInstrukcji
elif - pozwala dołożyć kolejny test logiczny do instrukcji warunkowej. Jest to element opcjonalny tak samo jak else. W przeciwieństwie do else sekcji elif może pojawić się więcej w jednej instrukcji warunkowej.
1 2 3 4 5 6 7 8 9 10 | a = int(raw_input()) b = int(raw_input()) c = int(raw_input()) if a < b and a < c: print "Najmniejsza wartosc jest przechowywana w zmiennej a: " + str(a) elif b < c: print "Najmniejsza wartosc jest przechowywana w zmiennej b: " + str(b) else: print "Najmniejsza wartosc jest przechowywana w zmiennej c: " + str(c) |
Od Pythona w wersji 2.5 do dyspozycji programistów oddano operator warunkowy posiadający poniższą składnię:
wartosc_1 if testLogiczny else wartosc_2
Przykład wykorzystania operatora warunkowego:
1 2 3 4 | a = int(raw_input()) b = int(raw_input()) print a if a<b else b |
Powyższy program wypisze wartość ze zmiennej a gdy jest ona mniejsza od wartości przechowywanej w zmiennej b. W przeciwnym wypadku wypisze wartość ze zmiennej b.
Poprzednia lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)
Następna lekcja: Lekcja 4 (pętle)
Zadanie
Jaka będzie odpowiedź poniższego skryptu?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | zwierze1 = "pies" zwierze2 = "kot" if zwierze1 > zwierze2: print "tak" else: print "nie" zwierze1 = zwierze2 zwierze2 = "kura" if zwierze1 > zwierze2: print "tak" else: print "nie" print "Twoje zwierzatko wydaje dzwiek:", if zwierze2 == "kot": print "mrrrr, miau" elif zwierze2 == "kura": print "ko ko ko" else: print "hmm... nie wiem." print "Nie zapomnij nakarmić psa." zwierze1 = 2 zwierze2 = zwierze1 * 2 print zwierze1 if zwierze1 > zwierze2 else zwierze2 |
Poprzednia lekcja: Lekcja 2 (stringi i pobieranie danych od użytkownika)
Następna lekcja: Lekcja 4 (pętle)
Komentarze