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