Przykład
print(2 == 2) #True
print(3 > 1) #True
print(3 >= 1) #True
print(3 < 1) #False
print(5 <= 5) #True
print(5 != 5) #False
Zastosowanie operatorów logicznych umożliwia sprawdzenie kilku warynków jednocześnie.
Podstawowe to:
Przykład
print(2 == 2 and 1 == 1) #True
print(2 == 2 and 1 == 2) #False
print(2 == 3 and 1 == 2) #False
print(2 == 2 or 1 == 1) #True
print(2 == 2 or 1 == 2) #True
print(2 == 3 or 1 == 2) #False
print(not(2 == 3 or 1 == 2)) #True
Instrukcja warunkowa if ma postać:
# instrukcje poprzedzające instrukcję if
if warunek lub warunki:
# jeśli warunek jest prawdziwy, to wejdziesz do bloku if
instrukcja_1 # instrukcje należące do if rozpoczynają się od wcięcia
instrukcja_2 # ta instrukcja także należy do bloku if
instrukcja_3 # ta instrukcja nie należy do bloku if
Jeżeli warunek ma wartość logiczną True, to wykonają się instrukcje, które zapisane są po wcięciu i tworzą one blok należący do if'a.
x = 3
if x == 3:
print("tak, to jest trzy")
print("Jeśli nie wierzysz, to patrz: x =",x)
x = 4
if x < 0: # ten warunek jest nieprawdziwy
print("tego tekstu nie zobaczysz") # ta instrukcja się nie wykona
Zasada działania instrukcji warunkowej if opiera się na wartości, jaką przyjmuje warunek. W przypadku True (lub wartości równej 1), instrukcje dla bloku if zostaną wykonane. Oznacza to, że w przypadku zmiennych logicznych można użyć skróconej konstrukcji warunku:
x = True
if x:
print("x ma wartość True")
W tej postaci instrukcji warunkowej, wykona się zawsze dokładnie jeden z dwóch bloków. Jeśli warunek (warunki) mają wartość logiczną True, to wykonają się instrukcje należące do bloku if, w przeciwnym razie do bloku else. Część else jest opcjonalna.
if warunek: # na końcu stawiamy dwukropek
instrukcja_1 # blok if
instrukcja_2 # blok if
itd. #blok if
else: # tu też stawiamy dwukropek
instrukcja_3 # blok else
instrukcja_4 # blok else
Prześledźmy przykład, który sprawdzi, czy podana osoba jest pełnoletnia.
x = int(input("Podaj swój wiek: "))
if x >= 18:
print("jesteś pełnoletni")
else:
print("nie jesteś jeszcze pełnoletni")
Instrukcja warunkowa może mieć wiele instrukcji elif.
Każda taka instrukcja posiada warunek do sprawdzenia, a blok do niej należący zaczyna się znakiem dwukropka
oraz jest wyróżniony tą samą głębokością wcięcia.
Blok instrukcji elif wykona się tylko wtedy, gdy warunek przy niej stojący ma wartość logiczną True,
a wszystkie poprzednie warunki miały wartość logiczną False.
instrukcje_poprzedzające_program
if warunek1:
instrukcje_1 # jeśli warunek1 jest prawdziwy
elif warunek2:
instrukcje_2 # jeśli warunek1 jest nieprawdziwy, a warunek2 jest prawdziwy
elif warunek3:
instrukcje_3 # jeśli warunek1 i warunek2 jest fałszywy, a warunek3 jest prawdziwy
# itd..
else # opcjonalnie
instrukcje_4 #jeśli wszystkie warunki są fałszywe
Zadanie. Tabela poniżej określa taryfikator mandatów w pewnym państwie:
| Wykroczenie | Wysokość mandatu |
|---|---|
| Przekroczenie prędkości do 10 km | 100 |
| Przekroczenie prędkości z przedziału [11, 30] | 200 |
| Przekroczenie prędkości > 30 | 400 |
Użytkownik podaje liczbę km, jaką przekroczył kierowca. Zadaniem programu jest określenie wysokości mandatu.
Rozwiązanie:
mandat = int(input("Podaj liczbę kilometrów, o jaką przekroczyłeś dozwoloną prędkość: "))
if mandat <= 10:
print("mandat: 100zł")
elif mandat <= 30:
print("mandat: 200zł")
else:
print("mandat: 400zł")
Kolejną opcją instrukcji if jest wykorzystanie operatora in, który pozwala w łatwy sposób sprawdzić, czy dany element występuje w zdefiniowanym wcześniej zbiorze:
x = "ala ma kota"
if "ma" in x:
print("wyraz 'ma' występuje w zdaniu '",x,"'")
x = (1, 2, 3, 12)
if 12 in x:
print("liczba 12 występuje w zbiorze",x)
Konstrukcja warunków instrukcji if i elif może być prosta — złożona z jednego warunku
lub złożona z kilku warunków połączonych operatorami logicznymi.
Popatrzmy na przykład, który sprawdzi, czy dana liczba naturalna dzieli się bez reszty przez 3 lub reszta z dzielenia tej liczby przez 7
jest równa 2:
x = int(input("Podaj liczbę: "))
if x % 3 == 0:
if x % 7 == 2:
print("Liczba spełnia kryteria zadania")
else:
print("Liczba nie spełnia kryteriów z zadania")
else:
print("Liczba nie spełnia kryteriów z zadania")
x = int(input("Podaj liczbę: "))
if x % 3 == 0 and x % 7 == 2:
print("Liczba spełnia kryteria zadania")
else:
print("Liczba nie spełnia ktyteriów z zadania")
Wyrażenie warunkowe (ang. conditional expression) w Pythonie pozwala na krótką i zwięzłą formę instrukcji warunkowych.
Wyrażenie to jest nazywane także operatorem trójargumentowym i ma następującą składnię:
x = wartość1 if warunek else wartość2
Działa to w następujący sposób:
Jest to przydatne do skrócenia instrukcji warunkowych w przypadku, gdy chcemy przypisać wartość zmiennej w zależności od spełnienia warunku.
Napisz program, który wypisze tak, jeśli osoba jest pełnoletnia lub nie w przeciwnym razie - operator trójargumentowy.
print("tak" if int(input()) >= 18 else "nie")
Ciekawy efekt uzyskujemy w połączeniu z pętlą, która będzie omówiona w kolejnym dziale.
data = ["parzysta" if x % 2 == 0 else "nieparzysta" for x in range(5)]
print(data)
wynik:
['parzysta', 'nieparzysta', 'parzysta', 'nieparzysta', 'parzysta']
l = int(input("Podaj liczbę l="))
if l % 2 == 0:
print("Liczba l=",l,"jest parzysta")
else:
print("Liczba l=",l,"jest nieparzysta")
-----------------------------------------
wynik:
Podaj liczbę l=11
Liczba l=11 jest nieparzysta
a = int(input("Podaj liczbę a="))
b = int(input("Podaj liczbę b="))
if a % b == 0:
print("Liczby", a, "i", b, "są podzielne")
else:
print("Liczby", a,"i", b, "nie są podzielne")
-----------------------------------------
wynik:
Podaj liczbę a=12
Podaj liczbę b=5
Liczby 12 i 5 nie są podzielne
haslo = input("Podaj hasło:")
dl = len(haslo)
if dl < 5:
print("Hasło",haslo,"ma", dl, "znaki i jest bardzo słabe")
elif dl < 9:
print("Hasło",haslo,"ma", dl, "znaków i jest słabe")
elif dl < 12:
print("Hasło",haslo,"ma", dl, "znaków i jest silne")
else:
print("Hasło",haslo,"ma", dl, "znaków i jest bardzo silne")
-----------------------------------------
wynik:
Podaj hasło:TajneHaslo0B
Hasło TajneHaslo0B ma 12 znaków i jest bardzo silne
Podaj hasło:pies
Hasło pies ma 4 znaki i jest bardzo słabe
x = int(input("Podaj liczbę "))
print("zero" if x == 0 else ("ujemna" if x < 0 else "dodatnia"))
-----------------------------------------
wynik:
Podaj liczbę -4
ujemna
a = int(input("Podaj liczbę a="))
b = int(input("Podaj liczbę b="))
c = int(input("Podaj liczbę c="))
print("Najmniejsza z wprowadzonych liczb", a, b, c, "to:")
min = a
if b<min:
min = b
if c<min:
min = c
print(min)
-----------------------------------------
wynik:
Podaj liczbę a=4
Podaj liczbę b=2
Podaj liczbę c=1
Najmniejsza z wprowadzonych liczb 4 2 1 to:
1
l = int(input("Podaj liczbę l="))
if (l>=1 and l<=10 or l>=17 and l<=21):
print("Liczba l=",l,"należy do przedziału <1..10> lub <17..21>")
else:
print("Liczba l=",l,"nie należy do przedziału <1..10> ani <17..21>")
-----------------------------------------
wynik:
Podaj liczbę l=15
Liczba l= 15 nie należy do przedziału <1..10> ani <17..21>
Podaj liczbę l=4
Liczba l= 4 należy do przedziału <1..10> lub <17..21>
a = int(input("Podaj długość a="))
b = int(input("Podaj długość b="))
c = int(input("Podaj długość c="))
if a+b>c and a+c>b and b+c>a:
print("Z odcinków o długości:", a, b, c, "można zbudować trójkąt.")
else:
print("Z odcinków o długości:", a, b, c, "nie można zbudować trójkąta.")
-----------------------------------------
wynik:
Podaj długość a=1
Podaj długość b=2
Podaj długość c=5
Z odcinków o długości: 1 2 5 nie można zbudować trójkąta.
Podaj długość a=4
Podaj długość b=4
Podaj długość c=3
Z odcinków o długości: 4 4 3 można zbudować trójkąt.
rok = int(input("Podaj rok="))
if rok < 1582:
print("Reforma obowiązuje od 1582 roku.")
else:
if(rok%4==0 and rok%100!=0 or rok%400==0):
print("W roku", rok, "liczba dni w lutym: 29")
else:
print("W roku", rok, "liczba dni w lutym: 28")
-----------------------------------------
wynik:
Podaj rok=1400
Reforma obowiązuje od 1582 roku.
Podaj rok=1600
W roku 1600 liczba dni w lutym: 29
Podaj rok=1700
W roku 1700 liczba dni w lutym: 28
Podaj rok=2024
W roku 2024 liczba dni w lutym: 29
Podaj rok=2025
W roku 2025 liczba dni w lutym: 28
Podaj rok=2100
W roku 2100 liczba dni w lutym: 28
Podaj rok=2400
W roku 2400 liczba dni w lutym: 29