Python #3 (operatory logiczne, if-elif-else)
Porównania
- W Pythonie porównania służą do sprawdzania relacji między wartościami i zwracają wynik logiczny - True lub False.
- Równość.
print(5 == 5) # True
print(5 == 4) # False- Nierówność.
print(5 != 3) # True
print(5 != 5) # False- Mniejsze; większe.
print(2 < 10) # True
print(5 < 1) # False
print(7 > 3) # True
print(2 > 10) # False- Mniejsze lub równe; większe lub równe.
print(4 <= 4) # True
print(3 >= 10) # FalseOperatory logiczne
Operatory logiczne
AND - warunki muszą być prawdziwe
OR - jeden warunek musi być prawdziwy
NOT - negacja- odwraca wartość logiczną
Kolejność -> not -> and -> or
Wcięcia
Wcięcia (ang. indentation) w Pythonie są bardzo ważne, bo to właśnie dzięki nim interpreter rozumie, które linie kodu należą do tego samego bloku.
- Określają strukturę programu. W innych językach (np. C, Java) używa się nawiasów{} do oznaczania bloków. W Pythonie rolę tych nawiasów pełnią wcięcia.
- Bez wcięć kod nie zadziała. Jeżeli źle ustawisz wcięcia, dostaniesz błąd.
- Poprawiają czytelność kodu.
- Zasady wcięć w Pythonie:
- Standardem są 4 spacje na jedno wcięcie (zgodnie z dobrymi praktykami PEP8 https://peps.python.org/pep-0008/
- Wszystkie linie w jednym bloku muszą mieć takie samo wcięcie.
- Nie mieszamy spacji i tabulatorów (bo mogą wywołać błędy).
If, elif, else
- Instrukcja if sprawdza warunek – jeśli jest prawdziwy (True), to wykonuje kod w bloku poniżej.
- elif (skrót od else if) pozwala sprawdzić dodatkowe warunki, gdy poprzedni if okazał się fałszywy. Możesz mieć dowolną liczbę elif.
- Instrukcja
- else wykona się wtedy, gdy żaden wcześniejszy warunek (if ani elif) nie był prawdziwy.
Schemat działania:
- Python sprawdza od góry: zaczyna od if. Jeśli warunek w if jest True → wykonuje blok i omija resztę (elif i else).
- Jeśli warunek w if jest False → sprawdza kolejne elif.
- Jeśli żaden warunek nie był prawdziwy → wykonuje się blok else.
Używając tylko if komputer wykonałby każde z porównań niezależnie od wyniku poprzedniego. Jeśli korzystamy z elif porównania wykonują się do momentu uzyskania w którymś odpowiedzi True - pozostałe wtedy są pomijane. Dzięki temu minimalizujemy ilość niepotrzebnie wykonywanych operacji.
a = 5
b = 2
if a > b:
print("a wieksze od b")
elif a == b:
print("a jest rowne b")
else:
print("a jest mniejsze od b")
print("Koniec programu")- nadawanie haseł
haslo = "mojehaslo"
nowe_haslo = input("Wprowadz haslo: " )
if haslo == nowe_haslo:
print("identyczne!")
else:
if len(nowe_haslo) < 12:
print("Haslo za krotkie")
else:
print("Nowe haslo prawidlowe.")
haslo = nowe_haslo
print("Twoje haslo to: ", haslo)
print("Koniec programu")- if elif else versus same if
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("Miaaauuuuuu .")
elif zwierzak == "rybka":
print("O, miłośnik rybek!")
print("Lubisz wodę?")
else:
print("A co to za zwierzak?")
print("Pa pa!")Wynik: O, miłośnik kotów!
Miaaauuuuuu .
Pa pa!
Przy samych if wykonuje się else, bo poprzednie if daje False:
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("Miaaauuuuuu .")
if zwierzak == "rybka":
print("O, miłośnik rybek!")
print("Lubisz wodę?")
else:
print("A co to za zwierzak?")
print("Pa pa!")Wynik: Wynik: O, miłośnik kotów!
Miaaauuuuuu .
A co to za zwierzak?
Pa pa!
- Sprawdzanie czy jest string pod zmienną
rybka = "Nemo"
if rybka:
print("to jest i staw")
else:
print("Nie ma rybki")W Pythonie każdy niepusty string traktowany jest jako wartość prawdziwa (True).
Instrukcja warunkowa if rybka: Ponieważ rybka zawiera tekst "Nemo", a nie pusty string (""), warunek jest spełniony. Wynik: to jest i staw
- Nowy kalkulator BMI z zakresami
wzrost_m = float(input("Podaj wzrost w metrach np. 1.70: ").replace(",", "."))
masa_kg = float(input("Podaj mase w kilogramach ").replace(",", "."))
bmi = masa_kg/wzrost_m**2
print("Twoje BMI to: ", round(bmi, 2))
if bmi < 16.0:
print ("Wyglodzenie")
elif bmi <= 16.9:
print("Wychudzenie")
elif bmi <= 18.4:
print("Niedowaga")
elif bmi <= 24.9:
print("Waga prawidłowa")
elif bmi <= 29.9:
print("Nadwaga")
elif bmi <= 34.9:
print("I stopien otylosci")
elif bmi <= 39.9:
print("II stopien otylosci")
else:
print("III stopien otylosci")taw
Nowe!
- \n to znak specjalny (tzw. znak nowej linii). Mówi Pythonowi: „przejdź do następnej linijki” w tekście.
- potrójne cudzysłowy """...""" albo ''' ... ''' mają specjalne zastosowania. Wielolinijkowe napisy (multi-line strings) -> Dzięki potrójnym cudzysłowom możesz zapisać tekst w kilku liniach bez używania \n.
- losowanie
import.random
- rand.int (często używane jako random.randint) pochodzi z modułu random w Pythonie i służy do losowania liczby całkowitej z podanego przedziału.
rand.int
import random
walka_wrecz_gracza = 5
obrazenia_gracza = 7
rzut_koscia = random.randint(1,20)
pancerz_przeciwnika = 10
punkty_zycia_przeciwnika = 5
if walka_wrecz_gracza + rzut_koscia > pancerz_przeciwnika and rzut_koscia > 1:
print("Trafiony! Zadano obrazenie przeciwkowi.")
punkty_zycia_przeciwnika -= obrazenia_gracza
if punkty_zycia_przeciwnika <=0:
print ("Przeciwnik padł")
elif rzut_koscia == 1:
print("Krytyczne pudło! Tracisz turę.")Zadanie - quiz
print("=== Quiz o DNA ===")
print("")
punkty = 0
# Pytanie 1
print("\n1. Gdzie w komórce eukariotycznej znajduje się DNA?")
print("a) W cytoplazmie")
print("b) W jądrze komórkowym")
print("c) W błonie komórkowej")
odp = input("Twoja odpowiedź: ")
if odp == "b":
print("Dobrze!")
punkty += 1
else:
print("Źle! Poprawna odpowiedź to b")
# Pytanie 2
print("\n2. Jaką strukturę przestrzenną ma cząsteczka DNA?")
print("a) Podwójna helisa")
print("b) Potrójna spirala")
print("c) Pojedynczy łańcuch")
odp = input("Twoja odpowiedź: ")
if odp == "a":
print("Dobrze!")
punkty += 1
else:
print("Źle! Poprawna odpowiedź to a")
# Pytanie 3
print("\n3. Która zasada azotowa łączy się zawsze z tyminą?")
print("a) Guanina")
print("b) Adenina")
print("c) Cytozyna")
odp = input("Twoja odpowiedź: ")
if odp == "b":
print("Dobrze!")
punkty += 1
else:
print("Źle! Poprawna odpowiedź to b")
# Pytanie 4
print("\n4. Z jakich zasad azotowych zbudowane jest DNA?")
print("a) Adenina, Tymina, Cytozyna, Guanina")
print("b) Adenina, Uracyl, Cytozyna, Guanina")
print("c) Adenina, Tyrozyna, Cysteina, Glutamina")
odp = input("Twoja odpowiedź: ")
if odp == "a":
print("Dobrze!")
punkty +=1
else:
print("Źle! Poprawna odpowiedź to a")
# Pytanie 5
print("\n5. Jaką rolę pełni DNA w organizmach żywych?")
print("a) Odpowiada za transport tlenu")
print("b) Dostarcza energii do reakcji komórkowych")
print("c) Jest nośnikiem informacji genetycznej")
odp = input("Twoja odpowiedź: ")
if odp == "c":
print("Dobrze!")
punkty +=1
else:
print("Źle! Poprawna odpowiedź to c")
# Wynik końcowy
print(f"\nTwój wynik: {punkty}/5")Quiz zmodyfikowany
print("*************************")
print("""Witaj w quizie
Gotowy?""")
print("*************************")
odpowiedz = input("Tak czy nie?: ")
if odpowiedz == "tak" or "Tak" or "TAK":
print("Zaczynamy!")
print("")
punkty = 0
#Pytanie 1
print("""Gdzie w komórce eukariotycznej znajduje się DNA?
a) w jądrze komórkowym
b) w wakuoli
c) w cytoplazmie""")
odp = input("Prawidłowa odpowiedź to (wybierz a, b lub c): ")
if odp == "a":
print("Dobrze!")
punkty += 1
else:
print("Zła odpowiedź. Prawidłowa odpowiedź to a")
punkty -= 1
print("")
# Pytanie 2
print("""Jaką strukturę przestrzenną ma cząsteczka DNA?
a) Podwójna helisa
b) Potrójna spirala
c) Potrójna helisa""")
odp = input("Prawidłowa odpowiedź to (wybierz a, b lub c): ")
if odp == "a":
print("Dobrze!")
punkty += 1
else:
print("Zła odpowiedź. Prawidłowa odpowiedź to a")
punkty -= 1
print("")
#Pytanie 3
print("""Która zasada azotowa łączy się zawsze z tyminą?
a) Guanina
b) Adenina
c) Cytozyna""")
odp = input("Prawidłowa odpowiedź to (wybierz a, b lub c): ")
if odp == "b":
print("Dobrze!")
punkty += 1
else:
print("Zła odpowiedź. Prawidłowa odpowiedź to b")
punkty -= 1
print("")
#Pytanie 4
print("""Z jakich zasad azotowych zbudowany jest DNA?
a) Adenina, Tymina, Cytozyna, Guanina
b) Adenina, Uracyl, Cytozyna, Guanina
c) Adenina, Tyrozyna, Cysteina, Glutamina""")
odp = input("Prawidłowa odpowiedź to (wybierz a, b lub c): ")
if odp == "a":
print("Dobrze!")
punkty += 1
else:
print("Zła odpowiedź. Prawidłowa odpowiedź to a")
punkty -= 1
print("")
#Pytanie 5
print("""Jaką rolę pełni DNA w organizmach żywych?
a) Odpowiada za transport tlenu
b) Dostarcza energii do reakcji komórkowych
c) Jest nośnikiem informacji genetycznej""")
odp = input("Prawidłowa odpowiedź to (wybierz a, b lub c): ")
if odp == "c":
print("Dobrze!")
punkty += 1
else:
print("Zła odpowiedź. Prawidłowa odpowiedź to c")
punkty -= 1
print("")
print("***************************************")
print(f"Twoja liczba punktów to {punkty}/5")
if punkty >= 3:
print("Test zaliczony. Gratulacje!")
else:
print("Spróbuj jeszcze raz")
print("***************************************")