Python - zajęcia 4
Struktury danych:
- służą do organizacji danych,
- pozwalają przechowywać dużą ilość danych przy ograniczeniu ilości zmiennych, analogią mogą być np. kubek na kawę lub skrzynka narzędzi,
- powinna być dobrana z myślą o celu.
Rodzaje struktur:
- lista
- słownik
- krotka
Listy i krotki
Podobieństwa:
- służą do przechowywania danych jeden po drugim, w zorganizowany sposób (każdy element ma indeks zaczynający się od 0)
- mogą posiadać duplikaty
- w obu przypadkach można się przemieszczać po ich elementach (można wybrać dowolny element)
Różnice:
Listy:
- są modyfikowalne - można dodawać/odejmować elementy
- często przemieszczamy się po elementach
- raczej nie sięga się po elementy ze środka list
- dobrą analogią są książki na półce
- deklaracja - użycie nawiasów kwadratowych, np:
moje_ksiazki = ["Blade Runner", "Hobbit", "Unicorn Project"]- Najlepiej nie mieszać typów zmiennych w liście
Krotki:
- nie są modyfikowalne
- stała długość
- częściej sięgamy po elementy znajdujące się gdzieś głęboko
- analogia - kategorie w menu restauracji
- deklaracja - użycje nawiasów okrągłych
kategorie_menu={"przystawki", "zupy", "dania główne", "desery")- dozwala się użycie różnych typów zmiennych
ubrania=("sukienka", "spodnie", "croptop", "t-shirt", "golf")
print(ubrania[-1]) #pokazuje ostatni element
Można wyświetlać część elementów listy/krotek:
moja_zmienna[start:koniec]Metody - funkcje przypisane do konkretnego obiektu (np. .append() jest przypisany do list)
nazwa_zmiennej.nazwa_metody(atrybuty)Wybrane metody dla list i krotek:

Słownik:
- bardziej zaawansowana struktura niż słowniki lub krotki, umożliwia odnalezienie zawartości z pomocą klucza przypisanego do niej, deklaracja:
moj_slownik={klucz:wartosc}np.
moj_slownik={"klucz1":"wartosc1", "klucz2":"wartosc2"}- kluczem mogą być np. teksty, liczby, krotki, ale uwaga na krotki, bo jak ma jakiś modyfikowalny element, to przestaje się nadawać na klucz
Zbiory
- są podobne do listy, deklaracja:
moj_zbior={unikat1, unikat2, unikat3}Ale w zasadzie to po co nam to?
- jak mamy listę z masą duplikatów to możemy ją zamienić na zbiór i z powrotem na listę i wtedy znikają duplikaty,
- to takie "słowniki, które mają tylko klucze".

Obiekty modyfikowalne/niemodyfikowalne:

Zadanie z ekwipunkiem:
## zadanie z ekwipunkiem
ekwipunek=["tarcza", "miecz", "napój leczący"]
ekwipunek.append("magiczny pył")
print(ekwipunek)
if "magiczny pył" and "napój leczący" in ekwipunek:
ekwipunek.append("większy napój magiczny")
ekwipunek.remove("magiczny pył")
ekwipunek.remove("napój leczący")
print(ekwipunek)
Kwestionariusz:
Zastanówcie się w jakiej strukturze danych można by było przechowywać quiz / kwestionariusz.
Ustaliliśmy, że wyniki uczestników quizu będziemy przechowywać w osobnej strukturze (i innej zmiennej).
Zasugerowałyście, że istotna są dla Was:
• pytania bez powtórzeń
• łatwość zmiany kolejności wyświetlania odpowiedzi
• odp. i pkt. w tym samym miejscu / tej samej strukturze
• kolejność przechowania punktów za odp i samego wariantu odpowiedzi ma znaczenie. Warto to zaznaczyć przy wyborze struktury danych
Propozycja:
- lista słowników - lista powoduje, że domyślnie pytania będą zadawane za każdym razem w tej samej kolejności, każdy słownik odnosiłby się do innego pytania, co pozwala na przechowywanie pytań i odpowiedzi w jednym miejscu, kluczami w tym słowniku mogłyby być pytanie, odpowiedzi i prawidłowa odpowiedź (i potencjalnie liczba punktów?)
quiz=[
{
"pytanie":"W którym roku była bitwa pod Grunwaldem?",
"odpowiedzi":["1410", "1395", "1402"],
"prawidlowa":"1410"
},
{
"pytanie":"w którym roku został opublikowany Python?",
"odpowiedzi":["1991", "1992", "1993"],
"prawidlowa":"1991"
},
{
"pytanie":"Ile minut ma doba?",
"odpowiedzi": ["3600", "1440", "2160"],
"prawidlowa":"1440"
},
{
"pytanie":"Taumatawhakatangihangakoauauotamateaurehaeaturipukapikimaungahoronukupokaiwhenuakitanatahu jest to nazwa miejscowości która znajduje się w:",
"odpowiedzi":["Polska", "Papua Nowa Gwinea", "Nowa Zelandia"],
"prawidlowa":"Nowa Zelandia"
},
{
"pytanie":"Kto jest obecnie prezydentem Polski?",
"odpowiedzi":["Karol Nawrocki", "Andrzej Duda", "Daniel Magical"],
"prawidlowa":"Karol Nawrocki"
}
]for pytanie in quiz:
print("\n", pytanie["pytanie"])
print("\n", pytanie["odpowiedzi"])
odpowiedz=input()
if odpowiedz==pytanie["prawidlowa"]:
print("Prawidłowa odpowiedź")
pkt+=1
else:
print("Nieprawidłowa odpowiedź")
print("Twoja liczba punktów to", pkt)Wiki kursowe:
Python | Robisz.to Wiki
krótkie notatki służące pomocy w zaczęciu z programowaniem w języku Python.

