Lekcja 4 - Nikola Horn
Zadanie domowe
Możemy zrobić listę pytań używając listy, a później użyć "random" do wyświetlenia ich w losowej kolejności. Nie wiem tylko jak później sprawdzić prawidłową odpowiedź? Jednym z moich pomysłów jest stworzenie 3 list z pytaniami, osobno dla odpowiedzi "a", "b" i "c", ale wtedy nie będą one wystarczająco losowe...
Imię użytkownika najlepiej zapisać przy pomocy "input" i słownika. Imię będzie kluczem, a pytania i jego odpowiedzi listą/krotką z wartościami (nie wiem niestety jak to zrobić, żeby sukcesywnie dodawać odpowiedzi do tego listy w tym kluczu?).
Tutaj moje zliczanie punktów na brudno z gotową już listą pytań i pustym słownikiem, a także pytaniem o imię.
import random
punkty=0
pytania = ["""
Jakie zwierzę ma krótki ogon?
a. szczur
b. jaszczurka
c. chomik
""", """
Jakie zwierzę potrafi skakać?
a. chomik
b. jaszczurka
c. wąż
""", """
Jakie zwierzę potrafi latać?
a. pingwin
b. kura
c. świnia
""", """
Jakie zwierzę zapada w sen zimowy?
a. jaszczurka
b. jeleń
c. zając
""", """
Jakie zwierzę lubi piaskowe kąpiele?
a. królik
b. świnka morska
c. chomik
"""]
#Tworzę pusty słownik
imiona={}
imie=(input("Jak się nazywasz? "))
print("Jakie zwierzę ma krótki ogon? a. szczur b. jaszczurka c. chomik")
odp1=(input("Odp: "))
if odp1=="c":
print("Dobra odpowiedź!")
punkty=punkty+1
else:
print("Zła odpowiedź")
print("Jakie zwierzę potrafi skakać? a. chomik b. jaszczurka c. wąż")
odp2=(input("Odp: "))
if odp2=="b":
print("Dobra odpowiedź!")
punkty=punkty+1
else:
print("Zła odpowiedź")
print("Jakie zwierzę potrafi latać? a. pingwin b. kura c. świnia")
odp3=(input("Odp: "))
if odp3=="b":
print("Dobra odpowiedź!")
punkty=punkty+1
else:
print("Zła odpowiedź")
print("Jakie zwierzę zapada w sen zimowy? a. jaszczurka b. jeleń c. zając")
odp4=(input("Odp: "))
if odp4=="a":
print("Dobra odpowiedź!")
punkty=punkty+1
else:
print("Zła odpowiedź")
print("Jakie zwierzę lubi piaskowe kąpiele? a. królik b. świnka morska c. chomik")
odp5=(input("Odp: "))
if odp5=="c":
print("Dobra odpowiedź!")
punkty=punkty+1
else:
print("Zła odpowiedź")
print(f"Udało ci się uzyskać {punkty} punktów")
Papier/kamień/nożyce - najprostsza wersja
import random
gra = ["papier", "nożyce", "kamień"]
wybor = (input("""Wpisz papier, nożyce lub kamień
"""))
wyborkomp = random.choice(gra)
print(f"Komputer wybrał {wyborkomp}")
if wybor == wyborkomp:
print("Remis!")
elif wybor == "papier" and wyborkomp == "nożyce":
print("Przegrana!")
elif wybor == "papier" and wyborkomp == "kamień":
print("Wygrana!")
elif wybor == "nożyce" and wyborkomp == "kamień":
print("Przegrana!")
elif wybor == "nożyce" and wyborkomp == "papier":
print("Wygrana!")
elif wybor == "kamień" and wyborkomp == "papier":
print("Przegrana!")
elif wybor == "kamień" and wyborkomp == "nożyce":
print("Wygrana!")
Papier/kamień/nożyce - wersja z indeksami i ASCII
import random
gra = ["""
_______
---' ____)____
______)
_______)
_______)
---.__________)
papier
""", """
_______
---' ____)____
______)
__________)
(____)
---.__(___)
nożyce
""", """
_______
---' ____)
(_____)
(_____)
(____)
---.__(___)
kamień
"""]
wybor = int(input("""Wpisz 0 - papier, 1 - nożyce lub 2- kamień
0 - papier
1 - nożyce
2 - kamień
"""))
wyborkomp = random.choice(gra)
print(f"Komputer wybrał {wyborkomp}")
if wybor == 0 and wyborkomp == gra[0]:
print("Remis!")
elif wybor == 1 and wyborkomp == gra[1]:
print("Remis!")
elif wybor == 2 and wyborkomp == gra[2]:
print("Remis!")
elif wybor == 0 and wyborkomp == gra[1]:
print("Przegrana!")
elif wybor == 0 and wyborkomp == gra[2]:
print("Wygrana!")
elif wybor == 1 and wyborkomp == gra[0]:
print("Wygrana!")
elif wybor == 1 and wyborkomp == gra[2]:
print("Przegrana!")
elif wybor == 2 and wyborkomp == gra[0]:
print("Przegrana!")
elif wybor == 2 and wyborkomp == gra[1]:
print("Wygrana!")
Notatki z zajęć
punkty = punkty+1 i punkty += 1 to to samo
"""
tekst
tekst 3 cudzysłowie do dużej ilości tekstu z interliniami
tekst
"""
inna opcja: \n - nowa linijka
print(f"\n xxx \n Twój wynik to: {punkty} \n xxx"
Listy i krotki - podobieństwa i różnice
- służą do przechowywania danych w zorganizowany sposób
- każdy element ma swój indeks (!!!)
- mogą posiadać duplikaty (!), np. kilka razy liczbę 1

Listy (ang. list)

- są modyfikowalne (mutable) - można dodawać/odejmować elementy za pomocą funkcji
- deklaruje się poprzez użycie [ ]
- unika się sięgania po elementy gdzieś w środku bardzo długich list
moje_ksiazki=["Blade Runner", "Hobbit", "Unicorn Project"]
Dodawanie do listy:
.append()
m2.append(8)
m2 - nazwa listy; .append - metoda; 8 - wartość, którą dodajemy do list
użycie + łączy dwie listy, np.:
[1,2] + [2,1]
to da nam listę o zwartości [1, 2, 2, 1]
Krotki (ang. tuple)

- niemodyfikowalne (immutable)
- mają stałą długość, więc częściej sięgamy po elementy znajdujące się gdzieś głęboko w nich
- deklaruje się poprzez użycie ( )
kategorie_menu = ("przystawki", "zupy", "dania")
Indeksy
Indeksy liczymy od 0!
moja_lista = ["cos1", "cos2", "cos3"]
print(moja_lista[2])
to nam wyświetli "cos3", ponieważ "cos1" ma indeks 0, a "cos2" indeks 1
Możemy liczyć też indeksy od tyłu, używając liczb minusowych, np.:
moja_lista = ["cos1", "cos2", "cos3"]
print(moja_lista[-1])
także wyświetli "cos3"
indeks -1 - ostatni element; -2 - przedostatni itp.
"Cięcie"/"filtrowanie" list i krotek
moja_zmienna[start:koniec]
moja_lista = [1 , 4 , 6, 8]
print(moja_lista[1:3])
wyświetli nam [4, 6] ponieważ "start" ma indeks 1, a "koniec" indeks 4, ale zawsze obcina wartości OD startu do PRZED końcem!!
moja_lista[2:] - od elementu z indeksem 2 do końca
moja_lista[:2] - od początku listy do elementu PRZED indeksem 2
List/tupple unpacking
Możemy łatwo stworzyć zmienne ze wszystkich wartości na liście/krotce
mlist = [1 , 2 , 3]
a, b, c = mlist
to da nam 3 zmienne:
a=1; b=2; c=3
Metody
specjalne funkcje przypisane do danego obiektu
nazwa_zmiennej.nazwa_metody(parametr)
moja_lista.append(nowy_element)

Tuple methods:

Słowniki (dictionary)

moj_slownik = {klucz: wartość}
moj_slownik = {"klucz1" : "wartość1", "klucz2" : "wartość2", "klucz3" : "wartość3"}
Klucz musi być unikalny!
Dobrą praktyką jest stosowanie jednorodnego schematu klucz:wartość.
Klucze wykorzystujemy, żeby szybko znaleźć zawartość.
moj_slownik = {"klucz1" : "wartość1", "klucz2" : "wartość2", "klucz3" : "wartość3"}
print(moj_slownik["klucz1"])
to wyświetli "wartość1"
Dodawanie do słownika:
moj_slownik["klucz4"]="wartość4"
Usuwanie:
moj_slownik.pop("klucz1")
Wartościami w słowniku mogą być listy lub krotki, np.
menu = {
"soki" : ["pomarańczowy", "jabłkowy", "marchewkowy"],
"zupy" : ["ogórkowa", "pomidorowa", "rosół"]
}
w takim wypadku możemy używać indeksów list zawartych w słowniku, np.:
print(menu["soki"][0])
wyświetli "pomarańczowy"
menu["soki"].pop(0)
usunie pierwszą wartość z klucza soki, czyli "pomarańczowy"
menu.clear()
wyczyści CAŁY słownik

Zbiory (set)

moj_zbior = {unikat1, unikat2, unikat3}
- to słownik z samymi kluczami
- zbiory nie mają powtórzeń
- nie mają indeksu
- jak chcemy usunąć powtórzenia z listy to możemy zamienić ją na zbiór i z powrotem!