Instrukcja warunkowa

Transkrypt

Instrukcja warunkowa
Spis treści
1 Instrukcja warunkowa
1.1 Przykład minimalny:
1.2 Przykład bardziej złożony:
1.3 Wyrażenie warunkowe
2 Ćwiczenia
Instrukcja warunkowa
Zasadniczo każdy program w Pythonie składa się z ciągu instrukcji, które są wykonywane w
kolejności, w jakiej zostały zapisane. W programowaniu potrzebna jest jednak możliwość
podejmowania decyzji o przyjęciu różnych kursów postępowania, w zależności od danych z jakimi
mamy do czynienia. Umożliwiają to instrukcje złożone, a szczególnie - instrukcja warunkowa.
Instrukcja warunkowa to pierwszy przykład instrukcji złożonej. W najprostszej postaci składa się ona
z ciągu (jednej lub więcej) instrukcji ujętych w blok, który jako całość będzie wykonany lub nie, w
zależności od tego, czy spełniony jest pewien warunek - co zależy zazwyczaj od aktualnych wartości
pewnych zmiennych. Warunek ten zapisuje się w postaci wyrażenia logicznego.
Wśród instrukcji tworzących blok warunkowy mogą oczywiście się pojawić również
instrukcje złożone, nie tylko instrukcje proste. Na przykład, kolejne instrukcje
warunkowe.
Przykład minimalny:
if delta > and not a == :
x1 = (-b + delta) / 2 / a
x2 = (-b - delta) / 2 / a
print(x1, x2)
Linijka z wywołaniem print nie jest już częścią instrukcji warunkowej, tylko kolejną instrukcją.
Do zapamiętania:
wiersz otwierający instrukcję złożoną (czyli tu: zaczynająca się od if) zawsze kończy się
dwukropkiem
instrukcje tworzące blok w instrukcji złożonej są pisane z wcięciem, które musi być jednolite
koniec bloku rozpoznaje się po powrocie do uprzedniego poziomu wcięcia
blok instrukcji pod if ... nie może być pusty. Instrukcja if z pustym blokiem warunkowym
jest nie tylko nieprzydatna, ale jest również błędem składniowym.
Przykład bardziej złożony:
if a == :
print('Równanie nie jest kwadratowe.')
elif delta > and not a == :
x1 = (-b + delta) / 2 / a
x2 = (-b - delta) / 2 / a
print('Są dwa pierwiastki: x1 =', x1, 'x2 =', x2)
elif delta == :
x = -b / 2 / a
print('Jest tylko jeden pierwiastek: x =', x)
else: # delta < 0:
print('Nie ma pierwiastków rzeczywistych.')
Jak to działa?
Jeżeli spełniony jest warunek a == 0, wykonany zostanie blok poniżej if ..., a reszta
instrukcji zostanie pominięta;
Jeżeli warunek ten jest nieprawdziwy (i tylko wtedy), to sprawdzane są kolejno warunki
umieszczone w wierszach zaczynających się od elif. Jeśli któryś z nich okaże się prawdziwy,
to blok poniżej tej linijki zostanie wykonany, a cała reszta - pominięta;
Jeżeli żaden z warunków - tych po if, i tych po wszystkich elif - nie okazał się prawdziwy,
wykonany zostanie blok związany z else.
Bloków elif może być w instrukcji dowolnie wiele (w tym - wcale), if jest obowiązkowy
(inaczej nie byłoby instrukcji warunkowej) i tylko jeden, else może wystąpić wyłącznie na
końcu - jeden raz, lub wcale.
Komentarz po else: jest podpowiedzią dla czytającego, że skoro już zbadano warunki delta
== 0 oraz delta > 0, a wykonanie dotarło do tej linijki, to delta < 0 jest jedyną pozostałą
możliwością (o ile możemy założyć, że delta jest na pewno liczbą!). Jest on przeznaczony
wyłącznie dla ludzkich oczu - interpreter go zignoruje, jak każdy komentarz.
Mam nadzieję, że czytający już zauważył, że and not a == 0 w trzeciej linijce jest
niepotrzebne. Dlaczego?
Wyrażenie warunkowe
Innym sposobem uzależnienia wyniku działania od jakiegoś warunku jest tzw. wyrażenie warunkowe.
Jest ono szczególnie wygodne w prostych przypadkach, i pozwala zapisać pewne działania w bardziej
zwięzły sposób.
Przykład: chcemy, aby z nazwą wbx wiązała się wartość bezwzględna (moduł) aktualnej wartości
(liczby) x. Za pomocą instrukcji warunkowej można to zrealizować tak:
if x < :
wbx = -x
else:
wbx = x
Ten sam wynik można osiągnąć za pomocą wyrażenia warunkowego:
wbx = -x if x <
else x
W wyrażeniu warunkowym nie ma opcji uwzględnienie dodatkowych możliwości za pomocą elif.
Ćwiczenia
W programach ćwiczebnych nieraz przyda nam się funkcja input(). Działa ona w sposób
następujący: argumentem wywołania powinien być jakiś napis (np. w postaci stałej napisowej):
input('podaj jakąś liczbę całkowitą: '). Gdy w programie przyjdzie kolej na wykonanie
takiego wywołania, program wypisze ten napis do terminalu i będzie oczekiwał na reakcję
użytkownika, czyli wpisanie czegoś z klawiatury (i zakończenie naciśnięciem klawisza Enter). Gdy to
nastąpi, wynikiem wywołania funkcji input w programie będzie treść wpisana prze użytkownika
(bez końcowego znaku nowej linii).
Uwaga: wartość zwracana przez input() zawsze jest napisem, a nie liczbą - choćby się składał z
samych cyfr.
1. Napisz program, którego uruchomienie ma następujący skutek:
program wita użytkownika (komunikatem w terminalu),
prosi o wprowadzenie liczby całkowitej,
sprawdza, czy liczba ta jest podzielna przez 7, i informuje o wyniku tego sprawdzenia
2. Napisz program, którego uruchomienie ma następujący skutek:
program prosi użytkownika o podanie swojego (lub czyjegoś) wieku w latach
jeśli wiek jest ujemny lub przekracza 120, odpowiada ,,Nieprawidłowy wiek"
jeśli wiek wynosi 0, odpowiada ,,niemowlę"
jeśli wiek jest poniżej 18, odpowiada ,,dziecko"
jeśli wiek jest pomiędzy 18 a 120 (włącznie), odpowiada ,,dorosły"
CDN
poprzednia | Strona główna | dalej
RobertJB (dyskusja) 15:42, 28 cze 2016 (CEST)

Podobne dokumenty