PPy3/InstrukcjaWarunkowa: Różnice pomiędzy wersjami
Linia 1: | Linia 1: | ||
=Instrukcja warunkowa= | =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. | ||
+ | |||
+ | <blockquote><small> | ||
+ | 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. | ||
+ | </small></blockquote> | ||
+ | |||
+ | Przykład: | ||
+ | |||
+ | <source lang=python> | ||
+ | if delta > 0 and not a == 0: | ||
+ | x1 = (-b + delta) / 2 / a | ||
+ | x2 = (-b - delta) / 2 / a | ||
+ | print(x1, x2) | ||
+ | </source> | ||
+ | |||
+ | Linijka z wywołaniem <tt>print</tt> 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 <tt>if</tt>) 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 <tt>if ...</tt> nie może być pusty. Instrukcja <tt>if</tt> z pustym blokiem warunkowym jest nie tylko nieprzydatna, ale jest również błędem składniowym. | ||
+ | |||
+ | Przykład bardziej złożony: | ||
+ | |||
+ | <source lang=python> | ||
+ | if a == 0: | ||
+ | print('Równanie nie jest kwadratowe.') | ||
+ | elif delta > 0 and not a == 0: | ||
+ | x1 = (-b + delta) / 2 / a | ||
+ | x2 = (-b - delta) / 2 / a | ||
+ | print('Są dwa pierwiastki: x1 =', x1, 'x2 =', x2) | ||
+ | elif delta == 0: | ||
+ | x = -b / 2 / a | ||
+ | print('Jest tylko jeden pierwiastek: x =', x) | ||
+ | else: # delta < 0: | ||
+ | print('Nie ma pierwiastków rzeczywistych.') | ||
+ | </source> | ||
+ | |||
+ | Jak to działa? | ||
+ | |||
+ | *Jeżeli spełniony jest warunek <tt>a == 0</tt>, wykonany zostanie blok poniżej <tt>if ...</tt>, 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 <tt>elif</tt>. 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 <tt>if</tt>, i tych po wszystkich <tt>elif</tt> - nie okazał się prawdziwy, wykonany zostanie blok związany z <tt>else</tt>. | ||
+ | *Bloków <tt>elif</tt> może być w instrukcji dowolnie wiele (w tym - wcale), <tt>if</tt> jest obowiązkowy (inaczej nie byłoby instrukcji warunkowej) i tylko jeden, <tt>else</tt> może wystąpić wyłącznie na końcu - jeden raz, lub wcale. | ||
+ | *Komentarz po <tt>else:</tt> jest podpowiedzią dla czytającego, że skoro już zbadano warunki <tt>delta == 0</tt> oraz <tt>delta > 0</tt>, a wykonanie dotarło do tej linijki, to <tt>delta < 0</tt> jest jedyną pozostałą możliwością. Jest on przeznaczony wyłącznie dla ludzkich oczu - interpreter go zignoruje, jak każdy komentarz. | ||
+ | |||
+ | <blockquote><small> | ||
+ | Mam nadzieję, że czytający już zauważył, że <tt>and not a == 0</tt> w trzeciej linijce jest niepotrzebne. Dlaczego? | ||
+ | </small></blockquote> | ||
+ | |||
+ | ''CDN'' | ||
---- | ---- |
Wersja z 14:20, 28 cze 2016
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:
if delta > 0 and not a == 0:
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 == 0:
print('Równanie nie jest kwadratowe.')
elif delta > 0 and not a == 0:
x1 = (-b + delta) / 2 / a
x2 = (-b - delta) / 2 / a
print('Są dwa pierwiastki: x1 =', x1, 'x2 =', x2)
elif delta == 0:
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ą. 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?
CDN