Lekcja 4 - Struktury danych, metody - Eliza S

Lekcja 4 - Struktury danych, metody - Eliza S
Photo by Bastian Riccardi / Unsplash
punkty += 1 

to jest to samo co zapis:

punkty = punkty + 1
Tekst pomiędzy trzema cudzysłowami: """ ... """ jest tym samym co tekst pisany z enterami \n od nowej linijki.

STRUKTURY DANYCH- czyli jak przechowujemy dane?

1. Listy (Lists) - modyfikowalne - []

  • Opis: Lista to sekwencja elementów, które mogą być różnego typu. Listy są modyfikowalne, co oznacza, że można dodawać, usuwać lub zmieniać ich elementy.
  • Przykład: my_list = [1, 2, 3, "hello", 4.5]
  • Metody: append(), remove(), pop(), sort(), reverse(), index(), count()
  • .append() dodaje element NA KOŃCU listy; pop()- usuwa element NA KOŃCU listy, ale możemy w nawiasie dać indeks elementu i wtedy usunie element z tym konkretnym indeksem np. .pop(0); remove usuwa konkretny ELEMENT (jego pierwsze wystąpienie); sortowanie odwrotnie moja_lista.sort(reverse = True), w .index i .count w nawiasie wpisujemy nazwę naszego elementu, jeśli przypiszemy zmienne to .index zwróci nam pierwszy indeks na którym występuje dana wartość, a .count liczbę wystąpień danego elementu na liście
my_list = [1, 2, 3, 4, 5]  # Tworzenie listy
my_list.append(6)  # Dodanie elementu na końcu listy
my_list.remove(3)  # Usunięcie elementu
popped_element = my_list.pop(1)  # Usunięcie elementu na danym indeksie i zwrócenie go
my_list.sort()  # Posortowanie listy rosnąco
my_list.reverse()  # Odwrócenie kolejności elementów w liście
index = my_list.index(4)  # Znalezienie indeksu pierwszego wystąpienia wartości
count = my_list.count(5)  # Liczba wystąpień danego elementu w liście
print(my_list)  # Wynik: [6, 5, 4, 2, 1]

2. Krotki (Tuples) - niemodyfikowalne - ()

  • Opis: Krotka to sekwencja elementów, podobna do listy, ale niemodyfikowalna (czyli nie można zmieniać jej elementów po utworzeniu).
  • Przykład: my_tuple = (1, 2, 3, "hello", 4.5)
  • Metody: count(), index()
my_tuple = (1, 2, 3, 4, 5)  # Tworzenie krotki
element = my_tuple[1]  # Dostęp do elementu poprzez indeks
count = my_tuple.count(3)  # Liczba wystąpień danego elementu w krotce
index = my_tuple.index(4)  # Znalezienie indeksu pierwszego wystąpienia wartości
# my_tuple[1] = 10  # Błąd! Krotki są niemodyfikowalne
print(my_tuple)  # Wynik: (1, 2, 3, 4, 5)

3. Słowniki (Dictionaries)- modyfikowalne {:}

  • Opis: Słownik przechowuje pary klucz-wartość, gdzie każdy klucz jest unikalny, a każda wartość może być dowolnego typu.
  • Przykład: my_dict = {"name": "Alice", "age": 25, "city": "New York"}
  • Metody: get(), keys(), values(), items(), update(), pop()
my_dict = {"name": "Alice", "age": 25, "city": "New York"}  # Tworzenie słownika
my_dict["email"] = "[email protected]"  # Dodanie nowej pary klucz-wartość
age = my_dict.get("age")  # Pobranie wartości dla danego klucza
keys = my_dict.keys()  # Pobranie listy kluczy
values = my_dict.values()  # Pobranie listy wartości
items = my_dict.items()  # Pobranie listy par klucz-wartość
my_dict.update({"age": 26})  # Aktualizacja wartości dla istniejącego klucza
my_dict.pop("city")  # Usunięcie pary klucz-wartość na podstawie klucza
print(my_dict)  # Wynik: {'name': 'Alice', 'age': 26, 'email': '[email protected]'}
Jeśli w słowniku wartość jest krotką, to sama krotka pozostaje niemodyfikowalna. Oznacza to, że nie można zmienić elementów tej krotki bezpośrednio. Możesz jednak modyfikować słownik, na przykład przypisując nową krotkę do istniejącego klucza. Wartości w słowniku są modyfikowalne, ale krotka, jako struktura, jest niemodyfikowalna.

4. Zbiory (Sets)- modyfikowalne {}

  • Opis: Zbiór to nieuporządkowana kolekcja unikalnych elementów. Zbiory nie dopuszczają duplikatów.
  • Przykład: my_set = {1, 2, 3, "hello"}
  • Metody: add(), remove(), pop(), union(), intersection(), difference()
my_set = {1, 2, 3, 4, 5}  # Tworzenie zbioru
my_set.add(6)  # Dodanie nowego elementu do zbioru
my_set.remove(3)  # Usunięcie elementu ze zbioru
popped_element = my_set.pop()  # Usunięcie i zwrócenie losowego elementu
another_set = {4, 5, 6, 7}
union_set = my_set.union(another_set)  # Unia zbiorów
intersection_set = my_set.intersection(another_set)  # Przecięcie zbiorów
difference_set = my_set.difference(another_set)  # Różnica zbiorów
print(my_set)  # Wynik: {2, 4, 5, 6}

Kwestionariusz problemy:

# Jak przechowywać wyniki wielu uczestników? klucz:wartość, czyli słownik
# Jak przechowywać pytania? Z jakimi konsekwencjami się to wiąże? też jako słownik, klucz to pytanie, wartość jako lista -> LISTA SŁOWNIKÓW, do tego może być lista poprawnych odpowiedzi w tym słowniku
# Jak skonstruować pytanie tak, aby możliwe było wyświetlanie odpowiedzi w losowej kolejności? odpowiedzi jako lista abc, import modułu random, funkcja shuffle
# Czy możliwe jest zliczanie punktów gdy wiele odp. jest poprawnych? tak, użyłabym warunków, albo stworzyła listę z poprawnymi odpowiedziami i przyrównała ją do listy z odpowiedziami użytkownika za pomocą warunku