rrogacz.pl
ikony programów
Python instrukcje warunkowe

Operatory porównania w Pythonie

Wynikiem porównań są wartości logiczne true lub false.
Należy pamiętać, że w porównaniu znak równości jest podwójny.
Operacje porównania:
  • operator == oznacza relację "równe"
  • operator > oznacza relację "większe"
  • operator >= oznacza relację "większe lub równe"
  • operator < oznacza relację "mniejsze"
  • operator <= oznacza relację "mniejsze lub równe"
  • operator != oznacza relację "różne"

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

Operatory logiczne


Zastosowanie operatorów logicznych umożliwia sprawdzenie kilku warynków jednocześnie.

Podstawowe to:

  • and - iloczyn logiczny,
  • or - suma logiczna,
  • not - negacja

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


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.

Przykład 1

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")

instrukcja warunkowa if — else

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.

Przykład 2

x = int(input("Podaj swój wiek: "))
if x >= 18:
	print("jesteś pełnoletni")
else:
	print("nie jesteś jeszcze pełnoletni")

instrukcja warunkowa if elif

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

Przykład 3

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ł")

Instrukcja warunkowa if in

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:

Przykład 4

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)

Warunki proste i złożone

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:

Przykład 5 — realizacja zadania z wykorzystaniem warunków prostych

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")

Przykład 6 — realizacja zadania z wykorzystaniem warunków złożonych

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")

Skrócony if - else, operator trójargumentowy

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:

  • Jeśli warunek jest prawdziwy (True), to x przyjmuje wartość wartość1.
  • Jeśli warunek jest fałszywy (False), to x przyjmuje wartość wartość2.

Jest to przydatne do skrócenia instrukcji warunkowych w przypadku, gdy chcemy przypisać wartość zmiennej w zależności od spełnienia warunku.

Przykład 7

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")

Przykład 8

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']	

zadania

  1. Napisz program informujący czy liczba parzysta czy nieparzysta.
    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	
    
  2. Sprawdza czy pierwsza jest podzielna przez drugą.
    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
    
  3. Podaj siłę hasła w zależności od ilości znaków.
    Hasło wprowadzamy w postaci ciągu znaków.
    Długość hasła podaje funkcja len Mniej niż 5: bardzo słabe;
    Między 5 i 8: słabe;
    Między 9 i 11: silne;
    Ponad 11: bardzo silne;
    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
    	
    
  4. Napisz program informujący czy liczba jest większa, mniejsza czy równa zero.
    Wykorzystaj instrukcję trójargumentową.
    x = int(input("Podaj liczbę "))
    print("zero" if x == 0 else ("ujemna" if x < 0 else "dodatnia"))
    -----------------------------------------	
    wynik:
    Podaj liczbę -4
    ujemna
    
    
  5. Napisz program wyznaczający najmniejszą z trzech liczb podanych przez użytkownika.
    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	
    
    
  6. Napisz program sprawdzający czy liczba jest z przedziału <1,10> lub <17,21>
    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>
    	
    
  7. Napisz program, który odpowiada na pytanie, czy z trzech odcinków o podanej długości można zbudować trójkąt.
    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.
    	
    
  8. Ilość dni w lutym.
    Program zwraca ilość dni w lutym w zależności od roku przestępnego.
    Lata przestępne liczymy od momentu reformy kalendarza w roku 1582.
    Rokiem przestępnym jest ten, który jest podzielny przez 4.
    Wyjątek stanowią lata podzielne przez 100 z wyjątkiem podzielnych przez 400.
    Np.: rok 1900 nie był przestępny, ale 1600 lub 2000 już tak.
    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
    	
    
Projekt i wykonanie: Ryszard Rogacz© 1999−2026