Python - Zajęcia 3
1) Porównywanie
W Pythonie możliwe jest porównywanie wartości. Dotyczy to różnego rodzaju danych, zarówno liczb jak i tekstu (string).
Jakie porównania możemy wykonać?
Operator | Pytanie | Przykład |
---|---|---|
== |
równe? | x == y |
!= |
nierówne? | x != y |
> |
większe? | x > y |
>= |
większe lub równe? | x >= y |
< |
mniejsze? | x < y |
<= |
mniejsze lub równe? | x <= y |
Warto zwrócić uwagę na znak służący do sprawdzenia czy wartości są równe, w Pythonie jest to podwójny znak równości (==
). Pojedynczy (=
) służy do przypisania wartości.
print(1 == 1)
Wynik: True
print(1 == "1")
Wynik: False, bo druga jedynka to string.
print("kot" == "zwierzę")
Wynik: False
print("kot" == "Kot")
Wynik: False
print(true == 1)
Wynik: True
Tutaj mamy true, bo true odczytywane jest jako 1. Tylko 0 odczytywane jest jako fałsz.
2) Operatory logiczne
Korzystając z wartości logicznych będziemy posługiwać się też operatorami:
- AND - Jeśli choć jeden z parametrów będzie fałszem, to
and
zwróci nam fałsz. - OR - Jeśli choć jeden z parametrów będzie prawdą, to
or
zwróci nam prawdę. - NOT -
not
odwróci nam wartość logiczną (czyli np. prawdę zamieni w fałsz).
Najpierw rozstrzygany jest operator not
, potem and
, na końcu or
.
print(1 == 1 and 2 == 2)
print(1 == 1 or 2 == 3)
print(not 2 == 3)
Wynik:
True
True
True
print(1 == 1 and 2 == 3)
print(1 == 2 or 2 == 3)
print(not 2 == 2)
Wynik:
False
False
False
Przykład użycia not
w kodzie
print("Czy Python jest najpopularniejszy wg TIOBE?")
odp = input("1. Tak, 2. Nie")
if odp not in ("1", "2"):
print("Źle wpisałeś nr odp")
print(true + true)
Wynik:
2, bo true odczytuje jako 1
3) Warunki
W Pythonie możemy sprawić, że określona czynność wykona się tylko po spełnieniu pewnych warunków.
Mając odpowiedź na porównanie w postaci tak/nie (a raczej True / False) możemy podjąć co zrobić jeżeli tak (if
). Możemy też podjąć jakąś decyzję jeśli inny warunek jest spełniony (elif
), lub jeśli żaden nie został spełniony (else
).
x = 5
y = 5
if x > y:
print("X jest większy od Y")
elif x < y:
print("X jest mniejszy od Y")
else:
print("X i Y są równe")
UWAGA! Print musi być wcięty, żeby wyświetlić pierwszy warunek. Jeśli nie będzie wcięty to wyświetli error (IndentationError).
if 3 > 1:
print("pierwsza liczba jest większa")
print("... a to kolejna linijka tekstu")
print("... i jeszcze jedna")
if 4 > 9:
print("to kolejny warunek, który został")
print("a to poza blokiem kodu")
4) Przykład definiowania funkcji - dodatkowe
liczba = 12
print(id(liczba))
def moja_funkcja(a: int):
print(id(a))
moja_funkcja(liczba)
Wyjaśnienie
- Przypisanie i wydruk ID:
liczba = 12
przypisuje wartość12
do zmiennejliczba
.print(id(liczba))
wyświetla adres pamięci, pod którym Python przechowuje wartość12
.
- Definicja funkcji:
def moja_funkcja(a: int):
definiuje funkcjęmoja_funkcja
, która przyjmuje jeden parametra
.- Wewnątrz funkcji
print(id(a))
wyświetla adres pamięci parametrua
.
- Wywołanie funkcji:
moja_funkcja(liczba)
wywołuje funkcjęmoja_funkcja
i przekazuje do niej zmiennąliczba
.- Wartość
12
przypisana doliczba
jest przekazywana jako argumenta
w funkcji.
Zakładając, że liczba
i a
wskazują na ten sam obiekt, ponieważ liczby całkowite są niemutowalne, Python przypisuje je do tego samego miejsca w pamięci, jeśli mają taką samą wartość. Przykładowy wynik może wyglądać tak:
140059939830952
140059939830952
5) Czemu używanie elif ma sens?
zwierzak = "kot"
if zwierzak == "pies":
print("O, miłośnik psów!")
print("Kostka dla Ciebie :).")
if zwierzak == "kot":
print("O, miłośnik kotów!")
print("Miaaaauuuuuu.")
if zwierzak == "rybka":
print("O, miłośnik rybek!")
print("Lubisz wodę?")
else:
print("A co to za zwierzak?")
print("Pa pa!")
Zmienna zwierzak
ma wartość "kot"
. Kod Python sprawdza kolejno, czy zwierzak
jest równy "pies"
, "kot"
, lub "rybka"
. Nawet jeśli pierwszy warunek jest sprawdzony to dalej sprawdza kolejne. Wynikiem będzie:
O, miłośnik kotów!
Miaaaauuuuuu.
A co to za zwierzak?
Pa pa!
A co jeśli użyjemy elif i else?
zwierzak = "kot"
if zwierzak == "pies":
print("O, miłośnik psów!")
print("Kostka dla Ciebie :).")
elif zwierzak == "kot":
print("O, miłośnik kotów!")
print("Miaaaauuuuuu.")
elif zwierzak == "rybka":
print("O, miłośnik rybek!")
print("Lubisz wodę?")
else:
print("A co to za zwierzak?")
print("Pa pa!")
W poprzednim kodzie były użyte trzy niezależne instrukcje if
, co oznaczało, że każda z nich była sprawdzana osobno. W nowym kodzie wykorzystujemy elif
, co powoduje, że po znalezieniu pierwszego pasującego warunku pozostałe warunki są pomijane.
O, miłośnik kotów!
Miaaaauuuuuu.
Pa pa!
UWAGA! Komunikat "pa, pa!" wyświetla się niezależnie od decyzji bo nie ma przy nim wzięcia. Jest na tym samym poziomie co decyzja, więc wykonuje się niezależnie od niej.
6) Warunki puste
rybka = "Nemo"
if rybka:
print("Masz rybkę!")
Ponieważ zmienna rybka
nie przechowuje "pustej" wartości, Python traktuje ją jako prawdę (True).
"Niepuste" wartości nie będące liczbą 0
są traktowane jako True, liczba 0
i puste elementy to False ("prawie prawda" i "prawie fałsz").
To bardzo wygodne rozwiązanie - skraca konstruowanie instrukcji warunkowych. To wyjaśnia, że w Pythonie, każda wartość, która nie jest "pusta" (np. None
, 0
, ""
lub []
) jest traktowana jako prawda (True
) w kontekście warunków.
6) Przykład z false
liczba = 0
if liczba:
print("Hej!")
else:
print("Papa!")
Zmienna liczba
przyjmuje wartość 0
. W Pythonie wartość 0
jest traktowana jako fałsz (False
), więc warunek się nie spełni i przejdzie do else
i zostanie wykonany blok else
, który wyświetli "Papa!"
.
7) Porównanie danych bez względu na wielkość liter
Żeby 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
).
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")
8) Zadanie - wykonaj test
wynik = 0
print ("Podaj poprawną odpowiedź - a,b lub c.")
odpowiedz1 = input("""Która z poniższych metod zabezpieczenia 2FA uznawana jest za najbezpieczniejszą?
a. SMS,
b. kod z aplikacji (TOTP),
c. klucz sprzętowy
Odpowiedź: """)
print (f"Twoja odpowiedź to: {odpowiedz1}")
print(" Poprawna odpowiedź to: C")
print(" ")
odpowiedz2 = input("""Który z poniższych języków programowania uznany został za najpopularniejszych wg . rankingu Tiobe 2023?
a. Cobol,
b. Python,
c. Pascal
Odpowiedź: """)
print (f"Twoja odpowiedź to: {odpowiedz2}")
print(" Poprawna odpowiedź to: B")
print(" ")
odpowiedz3 = input("""Skrót Iot oznacza:
a. Internet of Things (Internet Rzeczy),
b. Instrument of Technology,
c. Informacje o Technologii
Odpowiedź: """)
print (f"Twoja odpowiedź to: {odpowiedz3}")
print(" Poprawna odpowiedź to: A")
print(" ")
odpowiedz4 = input("""Czy kod w Pythonie wymaga ręcznej kompilacji dla każdego z systemów operacyjnych?
a. Tak,
b. Nie
Odpowiedź: """)
print (f"Twoja odpowiedź to: {odpowiedz4}")
print(" Poprawna odpowiedź to: B")
print(" ")
odpowiedz5 = input("""VsCode to:
a. edytor tekstu / kodu,
b. przeglądarka internetowa,
c. program do grafiki wektorowej
Odpowiedź: """)
print (f"Twoja odpowiedź to: {odpowiedz4}")
print(" Poprawna odpowiedź to: A")
print(" ")
if odpowiedz1.lower() == "c":
wynik = wynik + 1
if odpowiedz2.lower() == "b":
wynik = wynik + 1
if odpowiedz3.lower() == "a":
wynik = wynik + 1
if odpowiedz4.lower() == "b":
wynik = wynik + 1
if odpowiedz5.lower() == "a":
wynik = wynik + 1
print (f"Twój wynik to: {wynik}")
if wynik <3:
print("Próbuj dalej")
else:
print("Super wynik")
9) Tekst w input rozbity na kilka linijek
Żeby rozbić wyświetlany tekst na kilka linijek tak jak np. ten w teście powyżej trzeba na początku i końcu dać 3 razy ".
odpowiedz2 = input("""Który z poniższych języków programowania uznany został za najpopularniejszych wg . rankingu Tiobe 2023?
a. Cobol,
b. Python,
c. Pascal
Odpowiedź: """)
print (f"Twoja odpowiedź to: {odpowiedz2}")
print(" Poprawna odpowiedź to: B")
print(" ")
10) Rozbuduj kalkulator BMI
a) moje rozwiązanie
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 wynosi: {bmi:.2f}")
if bmi < 16.0:
print("wygłodzenie")
elif 16.0 <= bmi < 17.0:
print("wychudzenie")
elif 17.0 <= bmi < 18.5:
print("niedowaga")
elif 18.5 <= bmi < 25.0:
print("waga prawidłowa")
elif 25.0 <= bmi < 30.0:
print("nadwaga")
elif 30.0 <= bmi < 35.0:
print("I stopień otyłości")
elif 35.0 <= bmi < 40.0:
print("II stopień otyłości")
else:
print("III stopień otyłości")
b) rozwiązanie z zajęć

wzrost = float(input("Wpisz wzrost (w metrach): "))
waga = float(input("Wpisz ile ważysz (w kg): "))
indeks_bmi = waga / (wzrost * wzrost)
print(f"Twój indeks BMI to: {indeks_bmi}")
if indeks_bmi < 16:
print("wyglodzenie")
elif indeks_bmi < 17:
print("wychudzenie")
elif indeks_bmi < 18.5:
print("niedowaga")
elif indeks_bmi < 25:
print("waga prawidlowa")
elif indeks_bmi < 30:
print("nadwaga")
elif indeks_bmi < 35:
print("1 st otylosci")
elif indeks_bmi < 40:
print("2 st otylosci")
else:
print("3 st otylosci")
c) trzecia opcja
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")