Lekcja 3 - porównania i operatory logiczne (notatki)

Lekcja 3 - porównania i operatory logiczne (notatki)

Porównania

W Pythonie możliwe jest porównywanie wartości, dotyczy to zarówno liczb jak i stringów. W przypadku tych ostatnich jednak porównuje kolejność liter w wyrazie, a nie jego sens. Wyróżniamy 6 rodzajów porównań: równe ("=="); nierówne ("!="); większe (">"); większe lub równe (">="); mniejsze ("<") oraz mniejsze lub równe ("<=").

PRZYKŁADY

print(1 == 1)

Prawda

print(1 == "1")

Fałsz, bo przez cudzysłów Python odczytuje drugą jedynkę jako string.

print("pies" == "zwierzę")

Fałsz, bo porównuje litery a nie znaczenie słów.

print("pies" == "Pies")

Fałsz, bo porównuje także wielkość liter.


print(true == 1)
print(true == -1)

Prawda, ponieważ wszystkie niepuste wartości (także ujemne) odczytywane są jako prawdziwe. Tylko 0 odczytywane jest jako fałsz.


Operatory logiczne

Wyróżniamy 3 rodzaje operatorów logicznych AND (prawdziwe tylko gdy oba porównania / warunki są prawdą), OR (prawdziwe gdy jedno z porównań / warunków jest prawdziwe) oraz NOT (które zmienia wartość na przeciwną).

PRZYKŁADY

print(1 == 1 and 2 == 2)
print(1 == 1 or 2 == 3)
print(not 2 == 3)

Wszystkie powyższe zdania są prawdziwe.

print(1 == 1 and 2 == 3)
print(1 == 2 or 2 == 3)
print(not 2 == 2)

Wszystkie powyższe zdania są fałszywe.

UWAGA! Operatory można łączyć ze sobą, ale czytane są przez Pythona w określonej kolejności, najpierw NOT, potem AND i na końcu OR.

Instrukcje warunkowe (ang. conditional statements)

Korzystając z powyższych można sprawić, że Python wykona pewne czynności w zależności od tego czy dane stwierdzenie jest prawdziwe. Zgodnie z kolejnością: if warunek1 (jeżeli spełniony to wykonuje czynności po wcięciu), elif warunek2 (jeżeli warunek1 nie spełniony ale warunek2 tak, to wykonuje czynności po wcięciu, else (jeżeli żaden z powyższych warunków nie jest spełniony, zrób to co po wcięciu).

PRZYKŁADY

x = 5
y = 3
if (x > y):
    print("X jest większy od Y")
elif (x < y):
    print("X jest mniejsze od Y")
else:
    print("X i Y sa równe")
zwierzak = input("Wprowadź swoje zwierzę: ")

if zwierzak == "pies":
    print("O, miłośnik psów")
    print("Kostka dla Ciebie ;)")
elif zwierzak == "kot":
    print("O miłośnik kotów")
else:
    print("A co to za zwierzak?")
          
print("Pa pa")

UWAGA! Co zrobić by porównać ze sobą własną zmienną i dane wprowadzone przez użytkownika bez względu na to czy pisał małymi literami czy wielkimi? Trzeba skorzystać z funkcji wbudowanej w obiekt, która zmienia wszystkie znaki wprowadzonego stringa na małe (metoda lower) lub duże litery (metoda upper). A zatem w powyższym przykładzie należałoby zapisać:

zwierzak = input("Wprowadź swoje zwierzę: ")

if zwierzak.lower() == "pies":
    print("O, miłośnik psów")
elif zwierzak.lower() == "kot":
    print("O miłośnik kotów")
else:
    print("A co to za zwierzak?")
          
print("Pa pa")

Pamiętaj o dodaniu okrągłych nawiasów po metodzie, inaczej nie zadziała!!

Zamiast elif można wprowadzić if i pomnożyć ich ilość, jednak nie zaleca się tego robić, ponieważ przy użyciu elif, python pomija sekwencje następujące po pierwszym spełnionym warunku (co przyśpiesza jego działanie) w przeciwieństwie do komunikatów zawierających if. Ponadto wykona działanie następujące po else jeżeli poprzedzający go if będzie fałszywy (nawet jeżeli spełnił już warunek, przypisany do któregoś z wcześniejszych if).

A zatem gdyby w powyższym przykładzie zastąpić elif przez if to po wpisaniu przez użytkownika "pies" wyświetli się zarówno "O, miłośnik psów" jak i "A co to za zwierzak?".

Ćwiczenie

Stwórz quiz:

wynik = 0
print("""Która z poniższych metod zabezpieczenia 2FA uznawana jest za najbezpieczniejszą?
a. SMS
b. kod z aplikacji (TOTP)
c. klucz sprzętowy""")
odpowiedz = input("Twoja odp. to: ")
if odpowiedz.lower() == "c":
    print("Brawo!")
    wynik +=1
else:
    print("Nie udało Ci się.")
print(f"Twój wynik to {wynik}")

Podpowiedź: Aby zliczyć ilość poprawnych odpowiedzi ustaw na początku testu zmienną wynik = 0, a następnie po każdej poprawnej odpowiedzi dodawaj do zmiennej punkty zgodnie ze wzorem (np. wynik +=1). Pod koniec quizu możesz podać graczowi ilość poprawnych odpowiedzi.

ĆWICZENIE2

Rozbuduj kalkulator BMI (z poprzednich zajęć) o dodatkowe funkcje tj. wyświetlanie informacji czy waga jest prawidłowa, czy nie.

wzrost = float(input("Podaj swój wzrost w metrach: "))
waga = float(input("Podaj swoją wagę w kilogramach: "))
BMI = waga/(wzrost**2)
print(f"Twoje BMI to {BMI:0.2f}")
if BMI < 16:
    print("wygłoszenie")
elif BMI >= 16 and BMI <=16.9:
    print("wychudzenie")
elif BMI >= 17 and BMI <=18.4:
    print("niedowaga")
elif BMI >= 18.5 and BMI <=24.9:
    print("waga prawidłowa")
elif BMI >= 25 and BMI <=29.9:
    print("nadwaga")
elif BMI >= 30 and BMI <=34.9:
    print("I stopień otyłości")
elif BMI >= 35 and BMI <=39.9:
    print("II stopień otyłości")
elif BMI >= 40:
    print("III stopień otyłości")