PYTHON - NOTATKI Z ZAJĘĆ (3 + zadanie: quiz)

👌DODATKOWE SKRÓTY DO PYTHONA:
// –> dzielenie bez reszty
** –> potęgowanie
DZISIEJSZE ZAJĘCIA = INSTRUKCJE WARUNKOWE
- porównania i jak na ich podstawie podejmować decyzje w programie
- bloki kodu
PIERWSZY KROK = dokonanie PORÓWNANIA
--> Co jest wynikiem porównania? ==> zadajemy pytania, na które da się odpowiedzieć TAK/NIE (PRAWDA/FAŁSZ) = BOOL!!!; najprościej jest właśnie dokonać porównania, aby program podjął decyzję, np. czy 3 jest mniejsze bądź równe od 6? czy czerwone samochody są szybsze? czy płetwal błękitny jest największym ssakiem? czy połączenia zabezpieczone samodzielnie podpisanym certyfikatem SSL są szyfrowane?
PODSTAWOWE PORÓWNANIA:

W Pythonie jest podwójny znak równości (==
) służy do porównania czy dane wartości są równe, podczas gdy pojedynczy =
służy do przypisania wartości.
OPERATORY LOGICZNE
- 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 –> Odwraca nam wartość logiczną (czyli, np. to co jest prawdą, zwróci nam jako fałsz)
** najpierw rozstrzygany jest operator NOT, potem AND, a na końcu OR!
porownanie.py
# co zwróci poniższe
#1
print (5 > 4) #True
#2
print(6 > 7) #False
#3
print(3>3) #False
#4
print(3>=3) #True
#5
bmi = 27
nadwaga = 25
print(bmi > nadwaga) #True
#6
stare_haslo = "mojehaslo"
nowe_haslo = "nowehaslo"
print(stare_haslo == nowe_haslo) #False
#Wykorzystajmy to
#7
if stare_haslo == nowe_haslo:
print("Hasła są identyczne!")
#8
pelnoletni = 18
wiek_uzytkownika = 23
ma_zgode = True
#sprawdź czy użytkownik jest pełnoletni - jeśli tak, wyświetl mu komunikat "Zapraszamy!"
#w przeciwnym wypadku - "Nie możesz wejść!"
if wiek_uzytkownika >= pelnoletni:
print("Zapraszamy!")
else:
print("Nie możesz wejść!")
pelnoletni = 18
wiek_uzytkownika = 12
ma_zgode = True
#sprawdź czy użytkownik jest pełnoletni - jeśli tak, wyświetl mu komunikat "Zapraszamy!"
#w przeciwnym wypadku - "Nie możesz wejść!"
if wiek_uzytkownika >= pelnoletni:
print("Zapraszamy!")
elif ma_zgode:
print("Możesz wejść")
else:
print("Nie możesz wejść!")
#9
pkt_zycia = 100
otrzymane_obrazenia = 120
pkt_zycia -= otrzymane_obrazenia #równoznaczne z pkt_zycia = pkt_zycia - otrzymane_obrazenia
if pkt_zycia <= 0:
print("Koniec gry! Spróbuj jeszcze raz.")
#10
pierwsze_miejsce = 120
drugie_miejsce = 98
trzecie_miejsce = 75
wynik_gracza = 82
if wynik_gracza > pierwsze_miejsce:
print("Super! Twój wynik jest najlepszy!")
elif wynik_gracza > drugie_miejsce:
print("Gratulacje! Masz druugi najlepszy wynik!")
elif wynik_gracza > trzecie_miejsce:
print("Twój wynik plasuje sę na 3-im miejscu!")
else:
print("Twój wynik jest poza podium.")
# Czy masz pomysł jak zmodyfikować powyższy przykład tak aby zaktualizować od razu pierwsze_miejsce,
# drugie_miejsce, trzecie_miejsce w przypadku gdy wynik gracza znajdzie się na podium?
imie = input("Wprowadź swoje imię: ")
testowa = 0
if imie:
print("Witaj ", imie)
else:
print("Nie podałeś / -aś imienia!!!")
#można też podać to w taki sposób jak na dole, ale jest on dłuższy, a niepotrzebnie
if len(imie) > 0:
print("Witaj ", imie)
else:
print("Nie podałeś / -aś imienia!!!")
imie ="Kamila"
testowa = 0 #lub pusty string "" lub pusta lista []
if testowa:
print("Witaj ", imie)
else:
print("Nie podałeś / -aś imienia!!!")
WARUNKI I BLOKI KODU
Mając odpowiedź na porównanie w postaci TAK/NIE (TRUE/FALSE) możemy podjąć co zrobić jeżeli TAK ==> IF!!!
porownaniexy.py
x = 5
y = 3
if x > y:
print("X jest większy od Y")
x = 5
y = 3
z = 4
if x > y:
print("X jest większy od Y")
if z > y:
print("Z jest większe od Y")
WCIĘCIE JEST POTRZEBNE !!! NIE MOŻNA GO POMINĄĆ (dzięki niemu program rozpoznaję, która czynność jest przypisana do danego 'if', Python wykona tylko te linijki, które są wcięte (jeśli porównanie jest PRAWDĄ))
╰(*°▽°*)╯WCIĘCIE == WSKAZUJE BLOK KODU DO WYKONANIA
👌SKRÓTY DO PYTHONA:
** przy zaznaczeniu kilku linijek + TAB ==> WCIĘCIE (zazwyczaj są to 4 spacje)
** przy zaznaczeniu kilku wciętych linijek + SHIFT + TAB ==> BRAK WCIĘCIA
** len(x) ==> funkcja, która przelicza ilość znaków użytych w zawartości x + ilość obiektów zawartych w liście
Możemy też podjąć jakąś decyzję, jeśli inny warunek jest spełniony (ELIF!!!), lub jeśli żaden z warunków nie został spełniony (ELSE!!!)
porownaniexy.py(haslo)
# stare_haslo = "mojehaslo"
# nowe_haslo = "nowehaslo"
# ilosc_znakow_nowe_haslo = len(nowe_haslo)
# min_ilosc_znakow = 6
# if stare_haslo == nowe_haslo:
# print("Hasła są identyczne!")
# elif len(nowe_haslo) < min_ilosc_znakow:
# print("Hasło za krótkie")
# else:
# print("Hasło zmienione, wpisuje je do bazy danych.")
# stare_haslo = "mojehaslo"
# nowe_haslo = "mojehaslo"
# ilosc_znakow_nowe_haslo = len(nowe_haslo)
# min_ilosc_znakow = 6
# if stare_haslo == nowe_haslo:
# print("Hasła są identyczne!")
# elif len(nowe_haslo) < min_ilosc_znakow:
# print("Hasło za krótkie")
# else:
# print("Hasło zmienione, wpisuje je do bazy danych.")
stare_haslo = "mojehaslo"
nowe_haslo = "mojehaslo"
ilosc_znakow_nowe_haslo = len(nowe_haslo)
min_ilosc_znakow = 6
if stare_haslo == nowe_haslo:
print("Hasła są identyczne!")
if len(nowe_haslo) < min_ilosc_znakow:
print("Hasło za krótkie")
else:
print("Hasło zmienione, wpisuje je do bazy danych.")
Jaki jest zysk użycia elif, zamiast kolejnego warunku if? Kiedy wykona się część pod else? Czy uruchomi się w tym przypadku?
--> Używając elif oszczędzamy pracy komputerowi! Jeśli użyjemy samych if-ów to każdy taki warunek zostanie sprawdzony (często niepotrzebnie). Z elif-em pozostałe warunki nie zostaną sprawdzone, jeśli tylko jakiś zwróci wartość True. Jeśli żaden nie zwróci True, to wtedy wykona się sekcja else.
--> w przypadku z kotem wykonana zostanie sekcja z 'elif zwierzak == "kot": ...), czyli zostanie wyświetlona w jednej linijce "O, miłośnik kotów!", pod nią w kolejnej linijce "Miaaauuu .", plus "Pa pa!" (ponieważ jest to oddzielna metoda, nie zawierająca się w if, więc da wartość True, bo zawiera string).
Co ciekawe taka konstrukcja też zadziała:
rybka = "Nemo"
if rybka:
print("Masz rybkę!")
--> Ponieważ zmienna rybka nie przechowuje "pustej" wartości Python, traktuje ją jako prawdę (True). "Niepuste" wartości - niebędące liczbą zero (0) - są traktowane jako True, zaś liczba 0 i puste elementy to False ("prawie prawda" i "prawie fałsz"). To bardzo wygodne rozwiązanie - skraca konstruowanie instrukcji warunkowych.
ifologia_zle.py
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("Miaaauuu .")
if zwierzak == "rybka":
print("O, miłośnik rybek!")
print("Lubisz wodę?")
else:
print("A co to za zwierzak?")
print("Pa pa!")
ifologia.py
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("Miaaauuu .")
elif zwierzak == "rybka":
print("O, miłośnik rybek!")
print("Lubisz wodę?")
else:
print("A co to za zwierzak?")
print("Pa pa!")
brudnopisy.py
if "pies" == "kot":
print("Komunikat") #możemy porównywać wartości tekstowe
if "pies" > "kot":
print("Komunikat") #o dziwo jest to także poprawne porównanie dla Pythona, i to nie chodzi o ilość znaków, tylko o to że każda litera ma swoją wartość (kod znaku ASCII)
O dziwo w Pythonie porównanie tekstów są dozwolone np.
"pies" > "kot"
Takie porównanie zwróci nam wartość True
. Jak Python doszedł do takiego wniosku? Każdy znak jest jakąś liczbą w ściśle określonej tablicy znaków (w tym wypadku unicode). Python porównuje numer danej litery dla każdego znaku w tekście i na tej podstawie podejmuje decyzję.
kwestionariusz.py
punkty = 0
print("Tylko jedna odp. w każdym z pyt. jest poprawna.")
print("Zła odpowiedz odejmuje 0.5pkt")
print("Która z poniższych metod zabezpieczenia 2FA uznawana jest za najbezpieczniejszą?")
print("a. SMS")
print("b. kod z aplikacji (TOTP)")
print("c. klucz sprzętowy")
# print("Która z poniższych metod zabezpieczenia 2FA uznawana jest za najbezpieczniejszą? \n a. SMS \nb. kod z aplikacji (TOTP)\nc. klucz sprzętowy")
odpowiedz1 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz1.lower() == "c":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
2. Który z poniższych języków programowania uznany został za najpopularniejszych wg . rankingu Tiobe 2023?
a. Cobol
b. Python
c. Pascal
"""
)
odpowiedz2 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz2.lower() == "b":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
# print("Która z poniższych metod zabezpieczenia 2FA uznawana jest za najbezpieczniejszą? \n a. SMS \nb. kod z aplikacji (TOTP)\nc. klucz sprzętowy")
print(
"""
3. Kto namalował Mona Lisę?
a. Leonardo da Vinci
b. Leonardo DiCaprio
c. Michał Anioł
"""
)
odpowiedz3 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz3.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
4. Jak ma na imię pierwszy Polak na międzynarodowej stacji kosmicznej?
a. Sławosz
b. Mieszko
c. Bolesław
"""
)
odpowiedz4 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz4.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
5. Która planeta jest trzecia od Słońca?
a. Wenus
b. Ziemia
c. Mars
"""
)
odpowiedz5 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz5.lower() == "b":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
6. Kto napisał "Pana Tadeusza"?
a. Juliusz Słowacki
b. Henryk Sienkiewicz
c. Adam Mickiewicz
"""
)
odpowiedz6 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz6.lower() == "c":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
7. Co demonstranci z Bostonu w 1773 roku wrzucili do rzeki w ramach protestu przeciwko brytyjskim podatkom?
a. kakao
b. herbatę
c. rozmaryn
"""
)
odpowiedz7 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz7.lower() == "b":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
8. W którym roku wynaleziono żarówkę?
a. 1749
b. 1689
c. 1879
"""
)
odpowiedz8 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz8.lower() == "c":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print(
"""
9. Sformułowanie "Wstrzymał Słońce, ruszył Ziemię" odnosi się do:
a. Mikołaja Kopernika
b. Archimedesa
c. Arystotelesa
"""
)
odpowiedz9 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz9.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#uwaga z dokładnymi odpowiedziami
#-> niektóre obiekty mają funkcje przypisane tylko do siebie - tak jak STRING (są to metody)
moj_tekst = "Ala ma kota"
print(moj_tekst)
print(moj_tekst.upper())
#nawiasy () mówią o tym, żeby Python wykonał funkcję
print(moj_tekst.lower())
bmi2.py
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** – 1wychudzenie
# - **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.
#można też:
#if indeks_bmi < 16:
#print()
#elif indeks_bmi < 17:
#print()
#elif indeks_bmi < 18.5:
#print()
#...
#krócej tak
#lub
#if indeks_bmi < 16:
#print()
#elif 16 <= indeks_bmi and indeks_bmi < 17:
#print()
#...

** https://www.w3schools.com/python/python_ref_string.asp
METODY DLA STRINGA (przykłady) - te przypadki metod są także funkcjami(bo ())
- print(moj_tekst.upper())
- print(moj_tekst.lower())
** ważne jest zawieranie () , ponieważ dzięki nim Python wie, że ma wykonać funkcje
PRACA DOMOWA = własny quiz
punkty = 0
print("Tylko jedna odp. w każdym z pyt. jest poprawna.")
print("Zła odpowiedz odejmuje 0.5pkt")
#PYTANIE 1
print(
"""
1. Kto namalował Mona Lisę?
a. Leonardo da Vinci
b. Leonardo DiCaprio
c. Michał Anioł
"""
)
odpowiedz1 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz1.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 2
print(
"""
2. Co demonstranci z Bostonu w 1773 roku wrzucili do rzeki w ramach protestu przeciwko brytyjskim podatkom?
a. kakao
b. herbatę
c. rozmaryn
"""
)
odpowiedz2 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz2.lower() == "b":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 3
print(
"""
3. Kto jest twórcą muzyki do gry Baldur's Gate 3?
a. Borislav Slavov
b. Hans Zimmer
c. Lorien Testard
"""
)
odpowiedz3 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz3.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 4
print(
"""
4. Jak nazywa się najmniejszy element przestrzeni w grafice trójwymiarowej?
a. vexel
b. pixel
c. voxel
"""
)
odpowiedz4 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz4.lower() == "c":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 5
print(
"""
5. Jak nazywa się aktor głosowy, który udzielił głosu postaci Astariona w grze Baldur's Gate 3?
a. Tim Downie
b. Andrew Wincott
c. Neil Newbon
"""
)
odpowiedz5 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz5.lower() == "c":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 6
print(
"""
6. Kto wygrał nagrodę Game of the Year w 2023 roku?
a. Baldur's Gate 3
b. The Amazing Spider-Man 2
c. Alan Wake 2
"""
)
odpowiedz6 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz6.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 7
print(
"""
7. W którym roku został po raz pierwszy zaprezentowany Unreal Engine?
a. 2001
b. 2013
c. 1998
"""
)
odpowiedz7 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz7.lower() == "c":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 8
print(
"""
8. W roku 2023 w plebiscycie Młodzieżowe Słowo Roku 1. miejsce zajęło słowo:
a. rel
b. sigma
c. essa
"""
)
odpowiedz8 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz8.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 9
print(
"""
9. Jak nazywa się pierwsza postać komiksowa wydawnictwa Marvel Comics?
a. Iron Man
b. Namor
c. Hulk
"""
)
odpowiedz9 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz9.lower() == "b":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
#PYTANIE 10
print(
"""
10. Jak miał na imię goryl, który w 2016 roku został zastrzelony w zoo w Cincinnati?
a. Harambe
b. Tango
c. Atlas
"""
)
odpowiedz10 = input("Wprowadz swoja odp. (a, b, c): ")
if odpowiedz10.lower() == "a":
punkty += 1
else:
punkty -= 0.5
print("Twój wynik to: ", punkty)
print("Dziękujemy za Twój udział :) .")