Przejdź do głównej zawartości

Python - lekcja 003

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:

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)
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:

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

Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.