Do tej pory wszystkie nasze programy wykonały instrukcje po kolei bez pomijania żadnej z linii. Oto przykład; za pomocą przycisków lub klawiszy sterowania kursorem możesz krok po kroku przejść przez cały kod.
Nową umiejętnością na tej lekcji będzie stosowanie instrukcji if, która pozwala nam wykonywać akcje tylko wtedy, gdy spełnione są określone warunki, w przeciwnym wypadku pomijane są określone linie. Na przykład, zmieńmy nasz program: gdy wiek osoby jest wystarczająco duży, niech wyświetla dodatkową wiadomość. W tym celu dodamy dwie linie: if age > 65:
(czyli "jeśli wiek jest większy niż 65") i print('Ciesz się emeryturą!')
("Ciesz się emeryturą!"). Teraz przejdź ponownie do kodu:
Zauważ, że nowa instrukcja drukowania została pominięta, ponieważ wiek
wynosi zaledwie 31! Co się będzie działo w tym programie, gdy birthYear
zmienimy na rok 1928?
Widzisz różnicę? Wersja dolna (z age
85) drukowała dwie linie i nie pomijała żadnej. To jest właśnie celem instrukcji if: sprawdzić coś (czy
age
jest powyżej 65) i gdy tylko to jest prawdą, wykonać określone czynności (printing Enjoy retirement!
).
Te instrukcje, które są realizowane tylko dla prawdziwego warunku, nazywamy ciałem. Ciało musi być wcięte, oznacza to, że na początku linii jest dodatkowa przestrzeń. Ciało może zawierać więcej niż jedną instrukcję: w tym celu dla każdej kolejnej linii robimy takie samo wcięcie. Oto przykład:
- Spróbuj uruchomić ten kod w konsoli lub wizualizerze z datą urodzenia 1982. Obie linie są wcięte.
W następnym ćwiczeniu prosimy o napisanie krótkiego programu z zastosowaniem porównań boolowskich. W powyższych przykładach zapis "if x > y:
" oznacza "jeśli x
jest większe od y
". Możliwe jest również skorzystanie z następujących operacji:
if x < y:
means "jeśli x jest mniejsze od y"if x >= y:
means "jeśli x jest większe lub równe y"if x <= y:
means "jeśli x jest mniejsze lub równe y"
Struktura If
- Pierwsza linia,
if «warunek»:
ma trzy części: słowoif
,«warunek»
, który musi być wyrażeniem True/False (więcej o tym poniżej) oraz dwukropek:
- Następnie ciało składające się z jednej lub więcej wciętych linii. Liczba spacji (wielkość wcięcia) nie ma znaczenia, ale niekonsekwencja spowoduje błąd, ponieważ Python za pomocą wielkości wcięcia określenia miejsce, w którym chcesz rozpocząć lub zakończyć ciało. (Powszechnie stosuje się cztery spacje dla każdego wcięcia. Dobrą zasadą jest nie mieszanie tabulatorów ze spacjami, bo prowadzi to do tzw. niewidzialnych błędów.)
Ciało instrukcji if jest przykładem "bloku" kodu. Bloki będą używane później w wielu innych miejscach, na przykład w pętli i w definiowanych własnych funkcjach. (Niektóre inne języki programowania identyfikują bloki za pomocą nawiasów klamrowych
).{}
Następne ćwiczenie to w sumie 4 ćwiczenia w jednym. Twoim zadaniem jest uporządkować linie programu, aby uzyskać kilka różnych wyników. Klikaj na poziome belki, aby otworzyć każdą z części; zadania możesz wykonać w dowolnej kolejności. Aby uporządkować linie kodu, przeciągaj je i upuszczaj.
True, False i dane typu bool
Do tej pory w «warunku»
instrukcji if
stosowaliśmy proste porównania numeryczne x > y
, co jest prawdziwe, gdy x
jest większe od y
i fałszywe, gdy x
jest mniejsze lub równe y
. Uogólniając, każdą z wartości prawda/fałsz nazywamy wartością boolowską (patrz George Boole). W Pythonie typ bool
jest używany do reprezentowania wartości typu boolowskiego; istnieją tylko dwie wartości typu bool
: True
i False
.
Zauważ, że w Pythonie, gdy używasz bezpośrednio w programie wartości typu bool
, True i False muszą być pisane z dużej litery, w przeciwnym wypadku otrzymasz błąd.
Porównania boolowskie
Operatory >
, <
, <=
i >=
porównują dwie liczby i jako wynik podają wartość boolowską. Istnieją dwa inne sposoby porównywania liczb:
x == y
jest operatorem równości, zwracaTrue
jeślix
iy
są równex != y
jest operatorem różności, zwracaTrue
jeślix
iy
nie są równe==
i!=
działają na łańcuchach i innych typach danych
(Tu stosujemy dwa znaki równości ==
, pojedynczy znak równości stosujemy już w wyrażeniu typu x = «wyrażenie»
dla "przypisania zmiennej x wartości «wyrażenie» . Mylenie zapisu code>= z ==
jest źródłem wielu błędów.)
Oto ćwiczenie, które będzie dotyczyło jednego z nowych porównań.
Niedawno wprowadziliśmy pojęcie bloku (kilka linii zgrupowanych na tym samym poziomie wcięcia). Możesz mieć blok wewnątrz innego bloku:
if password=='openSesame': print('User logged on.') if hour>17: print('Good evening!') print('Enter a command:')Tutaj zewnętrzny blok składa się z 4 linii a wewnętrzny z 1 linii:
if password=='openSesame':print('User logged on.')
if hour>17:print('Good evening!')print('Enter a command:')
if
yhour>17
is false (and the inner block is skipped), the line print('Enter a command:')
of the outer block will still be executed.Teraz, musisz użyć zagnieżdżonych bloków do napisania nieco bardziej złożonego kalkulatora wieku.
Później, w lekcji 9 zobaczymy, że sytuacje obejmujące wiele kontroli logicznych można uprościć za pomocą funkcji else
i elif
(else if), jak również operatorów boolowkich "and", "or", i "not". Teaz jesteś gotowy, aby przejść do następnej lekcji.