Ifologia- if, elif, else - zajęcia 3

Porównywanie danych

Operatory porównania w Pythonie pozwalaj na ocenę i porównanie wartości, są niezbędne do tworzenia wyrażeń warunkowych- a one decydują o kierunku przepływu programu. Najlepszą praktyką jest porównywanie danych tego samego typu- dzięki czemu mamy bardziej oczekiwane i kontrolowane wyniki i działania programu.

Operator -> pytanie -> przykład

== równe np. x ==y
!= nie równe? np. x!=y
> większe x>y
>= większe lub równe x>=y
< mniejsze x<y
<= mniejsze lub równe x<=Y

print(1==1)
Wynik= True

print(1=="1")
Wynik= False 
#druga jedynka to string

print("kot"=="zwierze"
Wynik= False

print("Kot"="kot")
Wynik+ False

print(true==1)
Wynik= True
#True to 1; False to 0

💡Do czego wykorzystać: długość hasła, wiek użytkownika, kalkulator

OPERATORY LOGICZNE

Operatory logiczne- kiedy chcemy wykonać akcję w której jednocześnie dwa warunki są spełnione. W związku z tym, że składnia Pythona, jest w pewnym sensie zdaniem, możemy porównać to do zdań:

  • czy tweet jest promowany i pochodzi od osoby obserwowanej,
  • czy tweet jest własny lub pochodzi od osoby obserwowanej.

and

#"Będziesz mógł pograć, gdy odrobisz lekcje i posprzątasz pokój".
can_play_games = finished_homework and cleaned_room
#całe wyrażenie jest True tylko jeśli oba warunki z and są spełnione

print(True and True)  # True
print(True and False)  # False
print(False and True)  # False
print(False and False)  # False

# A czy Jasio może mieć szczeniaka?
have_time = True
is_responsible = False
can_have_puppy = is_responsible and have_time
print(can_have_puppy)  # False

#najpopularniejszym przykładem jest przykład z procentami
if percent >= 0 and percent <= 100:
  print("Poprawna wartość")
#jeśli zakres bedzie między 0 a 100 wyświetli się komunikat "Poprawna zawartość"

or

Musi zostać spełniony jedynie jeden warunek
"Kupimy nową roślinę kiedy pójdę do Biedronki albo do Netto"- wystarczy pójść do jednego sklepu aby kupić roślinę.

can_go_to_cinema = cleaned_garage or washed_car

print(True or True)  # True
print(True or False)  # True
print(False or True)  # True
print(False or False)  # False

# Czy Jasio dostanie czekoladę?
behaved_well = True
cleaned_room = False
can_eat_chocolate = behaved_well or cleaned_room
print(can_eat_chocolate)  # True

not

not jest zaprzeczeniem i działa jak minus. Zmienia wartość na odwrotną jak minus w matematyce.
Zamienia True na False i False na True

print(not True)  # False
print(not False)  # True

is_amazing = True
print(not is_amazing)  # False

is_boring = False
print(not is_boring)  # True

# Podobnie jak przy liczbach
positive = 1
print(-positive)  # -1

negative = -1
print(-negative)  # 1

podwójne zaprzeczenie

#podwójne zaprzeczanie
print(True)  # True
print(not True)  # False
print(not not True)  # True
print(not not not True)  # False
print(not not not not True)  # True

"Będziesz mógł grać na komputerze, jeśli nie zawalisz sprawdzianu z matematyki i posprzątasz pokój".- zaprzeczenie odnosi się TYLKO do zawalenia sprawdziany z matmy

can_play_games = not failed_math_test and cleaned_room

# Sprawdzian zaliczony
failed_math_test = False

# Pokój nieposprzątany
cleaned_room = False

# Nie zawaliłeś sprawdzianu i posprzątałeś pokój
print(not failed_math_test and cleaned_room)  # False

# Nie jest tak, że 
# zawaliłeś sprawdzian i posprzątałeś pokój
print(not (failed_math_test and cleaned_room))  # True

True and False zwraca False, ponieważ najpierw not True zwraca False, a następnie False and False zwraca False.

Żeby zaprzeczenie negowało większy obszar wyrażenia, powinniśmy cały ten fragment otoczyć nawiasami. not (True and False) daje True, bo najpierw True and False zwraca False, które jest następnie negowane przez not.

and -> jeśli chociaż jeden z parametrów będzie fałszywy da nam FALSE
or -> jeśli chociaż jeden z parametrów będzie prawdą or da nam TRUE
not -> odwróci nam wartość logiczną (np. prawdę zamieni w fałsz)

Kolejność rozstrzygania:
1. not
2.and
3.or


If, elif, else

Coś ma się zadziać, ale tylko w pewnych wypadkach, pod pewnymi warunkami.

INSTRUKCJE KONTROLNE (nazywane też instrukcjami sterującymi)- wszelkie elementy języka, które pozwolą na zmiany zachowania się kodu w zależności od wyników obliczeń wprowadzonych danych, powtarzanie operacji itd.
Pozwalają na zmianę przebiegu wykonywania programu w zależności od warunków lub powtarzanie pewnych operacji.
Najważniejsze to if, elif i else (oraz pętle for i while)

"Zadajemy pytania aby uzyskać odpowiedź"

Warto wiedzieć na starcie

Wcięcia!- w Pythonie ważny jest każdy znak i każde wcięcie. Wcięcia są jednak wyjątkowo ważne, ponieważ dzięki nim Python rozróżnia pytania warunkowe od reszty kodu.

Sposób robienia wcięcia może różnić sie zależnie od projektu stosuje się różne rodzaje formatowania / tab/ 4 spacje/ 2 spacje. nie mieszamy różnych metod robienia wcięć!

if False:
    print("A")
print("B")

#zostanie wydrukowane tylko B, ponieważ A znajduje się w bloku tekstu if a warunek nie został spelniony- kwestia wcięcia

if weekday == 'friday':
    print("Piateczek!")

Kod wykonywany jest od góry do dołu, od lewej do prawej.

Usunięcie wcięcie
shiftTab
-Znak = służy do przypisywania wartości, natomiast podwójne jego użycie == oznacza znak równe

Puste ciało funkcji

Jeśli ciało funkcji jest z jakiegoś powodu puste, Python myśli, ze błąd jest po naszej stronie i pomija dany fragment. Czasem chcemy celowo jakiś fragment na jakiś czas odłożyć, aby popracować nad innym należy dodać słowo "pass". Jest to konieczne alby nasz kod zadziałał poprawnie.

if is_logged:
  pass

if

Używamy if do uruchomienia bloku instrukcji tylko wtedy kiedy spełniony jest określony warunek. if wykonuje blok kodu tylko wtedy gdy dany warunek jest spełniony (ocenia się na true).
Jeśli warunek nie jest spełniony ocenia się na false i te warunki nie zostają wykonane tylko pominięte.
Ocenia czy instrukcja jest prawdziwa czy nie i uruchomi ją tylko wtedy, gdy jest prawdziwa.

źródło: https://kt.academy/pl/article/py-warunki
n=5
if n < 10:
  print(n)
print("koniec")

n=5
if n < 4:
  print(n)
print("koniec")

#wynik:
#5
#koniec
#koniec

else

Jeśli warunek if jest spełniony to wywołuje daną funkcję. Else to sposób aby wykonać jakąś akcję, również kiedy nie zostanie on spełniony. Wykonuje się w przypadku kiedy nasze if ma wartość false.

Żródło: https://kt.academy/pl/article/py-warunki
wiek = 18

if wiek >= 18:
  print("jesteś pełnoletni."
else:
  print("Jesteś niepełnoletni.")

  #wynik: jesteś pełnoletni


  punkty = 60
  if punkty >= 65:
    print("ocena pozytywna")
  else:
    print("Ocena negatywna")
  #wydrukuje się Ocena pozytywna

elif - else if


Elif to skrót od "else if". Słowo "else" moglibyśmy przetłumaczyć na język polski jako "w przeciwnym wypadku".
Używamy, kiedy mamy więcej warunków do sprawdzenia.
Tę część umieszczamy po ciele warunku if, ale przed else.

"W instrukcji if Python sprawdza kolejne części i dla pierwszej, dla której będzie spełniony, wywoła jej blok kodu. Po tym sprawdzanie się kończy. Więc jeśli mamy blok else, to zawsze wywoła się dokładnie jedno ciało. Instrukcja if z elif reprezentuje więc różne, wykluczające się alternatywy." (źródło: https://kt.academy/pl/article/py-warunki)

elif nie bedzie zlecal porównan- ooszczedzamy pracy kompitera

źródło: https://kt.academy/pl/article/py-warunki
if tweet_type == "promotional":
    print("Promowany")
elif tweet_type == "followed":
    print("Zwykły")
elif tweet_type == "own":
    print("Własny")
else:
    print("Inny")

# To samo co
if tweet_type == "promotional":
    print("Promowany")
else:
    if tweet_type == "followed":
        print("Zwykły")
    else:
        if tweet_type == "own":
            print("Własny")
        else:
            print("Inny")

Instrukcja z elif reprezentuje różne wykluczające się typy. W powyższym przypadku, jeśli tweet_type będzie równe promotional, to wypisze się tekst "Promowany". Jeśli będzie równe followed, to "Zwykły". Jeśli będzie równe own, to "Własny". Jeśli żadne z powyższych nie jest prawdziwe, to "Inny".
Żródło przykładu i tekstu: https://kt.academy/pl/article/py-warunki

Python string method

Przypisanie funkcji do stringów to metody
String normujący wszystkie litery na wielkie i string normujący wszystkie litery na małe:

msg="weLcoMe to PytHon CouRse!"
x=msg.upper()
print(x)

#output czyli wynik to WELCOME TO PYTHON COURSE

msg="weLcoMe to PytHon CouRse!"
y=msg.lower()
print(y)

#output wynik daje welcome to python course

kalkulator bmi z if

Print("Poznaj swój indeks BMI- Body Mass Index- popularnego wskażnika masy ciała, obliczanego przez porównanie stosunku masy ciała do wzrostu")

wzrost = float(input("Wpisz wzrost (w metrach): "))
waga = float(input("Wpisz ile ważysz(w kg): "))
indeks_bmi= waga / (wzrost*wzrost)

print(f"Twoj indeks BMI to:" indeks_bmi)

if indeks_bmi < 16.0:
    print("Wygłodzenie")
elif indeks_bmi >= 16.0 and indeks_bmi < 17:
    print("Wychudzenie")
elif indeks_bmi >= 17.0 and indeks_bmi < 18.5:
    print("Niedowaga")
elif indeks_bmi >= 18.5 and indeks_bmi < 25:
    print("Waga prawidłowa")
elif indeks_bmi >= 25.0 and indeks_bmi < 30:
    print("Nadwaga")
elif indeks_bmi >= 30.0 and indeks_bmi < 35:
    print("I stopień otyłości")
elif indeks_bmi >= 35.0 and indeks_bmi < 40:
    print("II stopień nadwagi")
else:
    print("III stopień otyłości")

# Normy dla osób dorosłych
# - **<16,0** – wygłodzenie;
# - **16,0-16,9** – wychudzenie
# - **17,0-18,4** – niedowaga;
# - **18,5-24,9** – waga prawidłowa;
# - **25,0-29,9** – nadwaga;
# - **30,0-34,9** – I stopień otyłości
# - **35,0-39,9** – II stopień otyłości;
# - **40,0** – III stopień otyłości.

print("Dziękujemy za skorzystanie z naszego kalkulatora BMI. Wyniki skonsultuj z lekarzem, dietetykiem bądź trenerem. Zdrowia!")

kwestinariusz

print("Rozwiąż quiz wiedzy o roślinach i dowiedz się, jak bardzo jesteś rośliniarzem. W formularzu wpisz swoje odpowiedzi za pomocą liter, pamietaj, że tylko jedna odpowiedź jest prawidłowa")
print("Złe odpowiedzi odejmują punkty. Wybieraj rozsądnie!")

punkty=0

print("Czy popularna roślina monstera jest składnikiem napoju energetycznego Monster?")
print("a. tak")
print("b. nie")
print("c. tylko korzenie")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "b":
punkty += 1
else:
punkty -= 0.5

print("Która z wymienionych roślin nazywana jest „chińskim lampionem”")
print("a. epipremnium global green")
print("b. monstera veriagata")
print("c. ceropegia")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "c":
punkty += 1
else:
punkty -= 0.5

print("Kiedy rośliny „tańczące” wykonują swój „taniec”?")
print("a. o zmierzchu")
print("b. kiedy słyszą muzykę")
print("c. w trakcie podlewania")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "a":
punkty += 1
else:
punkty -= 0.5

print("Popularne określenie „bigos” w kontekście roślin dotyczy")
print("a. nawozu z odchodów dżdżownic kalifornijskich")
print("b. mieszanki podłoża składającego się np. z keramzytu, agroperlitu, czipsów kokosowych")
print("c. kompostownik z martwych roślin, nazwa pochodzi od powiedzenia niezły bigos")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "b":
punkty += 1
else:
punkty -= 0.5

print("Seneccio Rowley nazywany jest sznurem pereł z powodu:")
print("a. liści w kształcie kulek")
print("b. perłowego koloru liśc")
print("c. rośliny tej używa się w przemyśle do wytwarzania pereł hodowlanych")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "a":
punkty += 1
else:
punkty -= 0.5

print("Czy białe liście roślin pozbawione chlorofilu jak w Monsterze Veriagacie są w stanie fotosyntezować?")
print("a. nie")
print("b. tak ale tylko przy odpowiednim doświetlaniu")
print("c. tak ale tylko przy odpowiednim nawożeniu")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "a":
punkty += 1
else:
punkty -= 0.5

print("Czy koty mogą spożywać rośliny egzotyczne?")
print("a. tak to dla nich bardzo korzystny sposób na oczyszczanie organizmu")
print("b. tak ale tylko po uprzednim ugotowaniu rośliny")
print("c. nie ponieważ egzotyczne rośliny mogą być dla nich zabójcze")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "c":
punkty += 1
else:
punkty -= 0.5

print("Czy bananowce mogą być hodowane w gruncie w polskim klimacie??")
print("a. nie")
print("b. tak można hodować w gruncie dowolny gatunek bananowców")
print("c. można hodować tylko mrozoodporną odmianę")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "c":
punkty += 1
else:
punkty -= 0.5

print("Czym jest paszport roślinny?")
print("a. to dokument wykonany z ekologicznych materiałów rodzimych roślin pozwalający na podróże w Europie")
print("b. to dokument, który wyrabia się dla roślin domowych jeśli chcemy z nimi podróżować po Polsce")
print("c. dokument wymagany przy sprzedaży roślin, niezbędny do handlu na odległość")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "c":
punkty += 1
else:
punkty -= 0.5

print("Wełnowce to:")
print("a. wełniane ocieplacze dla roślin ogrodowych stosowane kiedy temperatura spada poniżej 10 stopni")
print("b. pasożyty")
print("c. dodatek stosowany do mieszanek gotowego podłoża, który zapewnia korzeniom dodatkowe poduszki powietrzne")

odpowiedz = input("Wprowadz swoja odp. (a, b, c): ")

if odpowiedz == "b":
punkty += 1
else:
punkty -= 0.5

print("Twój wynik to: ", punkty)


Przykładowym zadaniem na naszym kursie jest stworzenie sprawnego kwestionariusza. Szukając dodatkowych materiałów znalazłam kilka praktycznych instrukcji:
https://realpython.com/python-quiz-application/

#if
#else
#ifologia
#porównywanie danych
#kwestionariusz
#quiz
#kalkulator BMI
#elif
#operatory logiczne
#and or not