and, or, not – łączenie kilku warunków w jeden
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Jeśli dwie rzeczy muszą być spełnione naraz, nie musisz zagnieżdżać dwóch bloków if. Wystarczy połączyć warunki jednym słowem. Na tej lekcji poznasz trzy takie słowa: and, or i not.
Po tej lekcji:
- połączysz dwa warunki operatorem
andi dwa operatoremor, - zapiszesz sprawdzenie zakresu w wersji skróconej,
- będziesz wiedzieć, że w Pythonie piszemy
and, a nie&&, - zrozumiesz, że porównanie samo w sobie ma wartość
TruealboFalse.
Trzy słowa zamiast zagnieżdżania
and– oba warunki muszą być prawdziwe,or– wystarczy, że jeden jest prawdziwy,not– odwraca wynik na przeciwny.
wiek = 20
ma_bilet = True
if wiek >= 18 and ma_bilet:
print("Wejscie OK")
W Pythonie zapisujesz je słowami. Znaki&&,||i!to inne języki – w Pythonie dadzą błąd SyntaxError. Wrócą do ciebie dopiero w C#.
Kiedy warunek złożony jest prawdziwy
A and B– gdy oba są prawdziwe, np.wiek >= 18 and wiek < 65.A or B– gdy przynajmniej jeden jest prawdziwy, np.dzien == 6 or dzien == 7.not A– gdy A jest fałszywe, np.not ma_bilet.
Zapamiętaj skrótowo: and jest wymagające – wystarczy jeden fałszywy warunek, żeby całość była fałszywa. or jest pobłażliwe – wystarczy jeden prawdziwy, żeby całość była prawdziwa.
Można łączyć więcej niż dwa warunki. Przy mieszaniu and z or w jednej linii koniecznie wstawiaj nawiasy – inaczej trudno przewidzieć wynik.
Sprawdzanie zakresu – zapis skrócony
Warunek „liczba z przedziału od 1 do 6” zwykle zapisuje się dwoma porównaniami połączonymi and. W Pythonie można krócej – tak jak w matematyce.
x = 4
if x >= 1 and x <= 6: # wersja pełna
print("W zakresie")
if 1 <= x <= 6: # wersja skrócona – znaczy to samo
print("W zakresie")
if not (1 <= x <= 6): # zaprzeczenie
print("Poza zakresem")
Krótszy zapis jest czytelniejszy i trudniej się w nim pomylić. Sprawdzanie, czy liczba mieści się w zakresie, pojawia się w każdym zadaniu egzaminacyjnym.
W C# ten skrót nie działa – tam trzeba wrócić do dwóch warunków połączonych &&.
Warunek sam w sobie ma wartość
Zapis 5 > 3 to nie tylko element instrukcji if. To wyrażenie, które ma wartość – taką samą jak zmienna typu bool z lekcji 3.
print(5 > 3) # True
print(5 == 3) # False
wynik = 10 > 7
print(wynik) # True
Dzięki temu if ma_bilet: działa bez żadnego porównania – w zmiennej już siedzi True albo False. Zapis if ma_bilet == True: też zadziała, ale jest zbędny.
Pamiętaj o wielkości liter: True i False, nie true i false.
W kodzie z lekcji: krótkie spięcie
Demo pokazuje jeszcze jedną rzecz: Python nie sprawdza drugiego warunku, jeśli pierwszy już przesądził o wyniku. Przy False and ... druga część w ogóle się nie wykona, tak samo przy True or .... Uruchom demo i zobacz, że funkcja sprawdz() nie zostaje wywołana.
Spróbuj sam
Zadania z lekcji:
- Utwórz zmienną
liczba. Wypisz TAK, jeśli jest jednocześnie trzycyfrowa, parzysta i podzielna przez 5. W przeciwnym razie wypisz NIE. - Utwórz zmienną
dzienz liczbą od 1 do 7. Wypisz, czy to weekend, czy dzień roboczy. Skorzystaj z operatoraor. - Utwórz zmienną
ocena. Sprawdź zapisem skróconym, czy mieści się w zakresie od 1 do 6. Jeśli nie – wypisz komunikat o błędnej wartości. - Wypisz przez
printwynik pięciu dowolnych porównań, żeby zobaczyć wartościTrueiFalsena własne oczy.
Sprawdź się
- Połączę dwa warunki operatorem
andi dwa operatoremor. - Zapiszę sprawdzenie zakresu w wersji skróconej.
- Wiem, że w Pythonie piszemy
and, a nie&&. - Rozumiem, że porównanie ma wartość
TruealboFalse.
Na następnej lekcji: pętle. Zamiast pisać to samo polecenie dziesięć razy, napiszesz je raz i każesz Pythonowi powtórzyć.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.