🌞 Podstawowe typy wbudowane
Wprowadzenie
W Pythonie istnieje kilka podstawowych typów wbudowanych, które pozwalają na przechowywanie i manipulowanie różnymi rodzajami danych. Do najważniejszych należą:
- Liczby (int, float, complex) – typy liczbowe,
- Łańcuchy znaków (str) – sekwencje znaków,
- Listy (list) – uporządkowane kolekcje elementów,
- Krotki (tuple) – niemutowalne kolekcje elementów,
- Słowniki (dict) – struktury danych przechowujące pary klucz-wartość,
- Zbiory (set) – nieuporządkowane kolekcje unikalnych elementów.
Liczby
Typy liczbowe w Pythonie
Python obsługuje kilka typów liczbowych:
# Liczba całkowita
x = 10 # int
# Liczba zmiennoprzecinkowa
y = 3.14 # float
# Liczba zespolona
z = 1 + 2j # complex
Dokładność liczb zmiennoprzecinkowych
Dokładność liczb zmiennoprzecinkowych
Warto pamiętać, że liczby zmiennoprzecinkowe (float) są reprezentowane w standardzie IEEE 754, co może prowadzić do błędów zaokrągleń:
print(0.1 + 0.2) # Wynik może być 0.30000000000000004 zamiast 0.3
decimal:
from decimal import Decimal
x = Decimal('0.1')
y = Decimal('0.2')
print(x + y) # Wynik: 0.3 (dokładnie)
32-bit vs. 64-bit
Python samodzielnie zarządza precyzją liczb całkowitych, ale liczby zmiennoprzecinkowe (float) zależą od architektury systemu:
- Systemy 32-bitowe przechowują
floatjako pojedynczą precyzję (32 bity), co może prowadzić do większych błędów zaokrągleń. - Systemy 64-bitowe używają podwójnej precyzji (64 bity), co zapewnia większą dokładność, ale nadal podlega ograniczeniom standardu IEEE 754.
Jeśli kluczowa jest precyzja obliczeń, warto rozważyć użycie decimal.Decimal lub fractions.Fraction.
Operacje matematyczne
Python obsługuje podstawowe operacje matematyczne:
a = 10
b = 3.5
suma = a + b
roznica = a - b
iloczyn = a * b
iloraz = a / b
potega = a ** 2
modulo = a % 3
Łańcuchy znaków
Łańcuchy znaków w Pythonie są niezmienne i można się do nich odwoływać jak do sekwencji:
tekst = "Witaj, świecie!"
print(tekst[0]) # Pierwszy znak
print(tekst[-1]) # Ostatni znak
print(tekst[0:5]) # Fragment łańcucha
Możemy również manipulować łańcuchami:
print(tekst.upper()) # Wielkie litery
print(tekst.lower()) # Małe litery
print(tekst.replace("Witaj", "Hello")) # Zamiana fragmentu
Listy
Listy są dynamicznymi kolekcjami elementów różnych typów:
lista = [1, 2, 3, "Python", 3.14]
print(lista[2]) # Dostęp do elementu
lista.append("Nowy element") # Dodanie elementu
lista.remove(3) # Usunięcie elementu
print(lista)
Operacje na listach
Wycinki (slicing)
Listy obsługują operacje wycinania (slicing):
lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(lista[2:5]) # Elementy od indeksu 2 do 4
print(lista[:4]) # Pierwsze 4 elementy
print(lista[5:]) # Wszystkie elementy od indeksu 5
print(lista[-3:]) # Ostatnie 3 elementy
print(lista[::2]) # Co drugi element
Odwracanie listy
print(lista[::-1]) # Odwrócenie kolejności elementów
Sprawdzanie obecności elementu
if "Python" in lista:
print("Element istnieje w liście!")
Można także używać list składanych:
liczby = [x for x in range(10) if x % 2 == 0]
print(liczby) # Lista parzystych liczb
Słowniki
Słowniki przechowują dane w postaci par klucz-wartość:
osoba = {
"imie": "Jan",
"nazwisko": "Kowalski",
"wiek": 30
}
print(osoba["imie"]) # Dostęp do wartości
osoba["miasto"] = "Warszawa" # Dodanie nowej pary
print(osoba)
Krotki
Krotki działają podobnie do list, ale są niemutowalne:
krotka = (1, 2, "Python", 3.14)
print(krotka[1])
# krotka[1] = 5 # Błąd: nie można modyfikować elementów krotki
Zbiory
Zbiory przechowują unikalne wartości i pozwalają na operacje matematyczne:
zbior1 = {1, 2, 3, 4}
zbior2 = {3, 4, 5, 6}
print(zbior1 & zbior2) # Część wspólna
print(zbior1 | zbior2) # Suma zbiorów
📝 Zadania
- W katalogu
python1course/zaj01stwórz nowy plik o nazwieskrypt2.py. Wszystkie kolejne instrukcje z tego rozdziału wykonuj właśnie w tym pliku.
Pamiętaj, że dobrą praktyką jest importowanie modułów i pakietów na samym początku pliku
Na różnych etapach tych zadań wykorzystaj funkcję type(), która pozwala zauważyć, jak działa dynamiczne typowanie w Pythonie
Działania matematyczne
- Stwórz zmienną
wartosci przypisz jej liczbę 100 - Do zmiennej
dodawanieprzypisz wartość dodania do zmiennejwartoscliczby123.15 -
Stwórz zmienną
potegai przypisz do niej zmiennądodawaniepodniesioną do potęgi12345Pojawia Ci się błąd?
Jest to spodziewane, zamień potęgę na
12. -
Do zmiennej
tekstprzypisz rzutowanie wartości zmiennejpotegana typstring(funkcjastr()) - Do zmiennej
wartosc_piprzypisz wartość liczby pi - Do zmiennej
losowaprzypisz losową wartość z listy [1,2,3,4,5]
Łańcuchy znaków
- Nadpisz zmienną
tekstnastępującym wyrażeniem:tekst = f"Wartosc: {tekst}" - Wyświetl długość tekstu w zmiennej
teksti później wykorzystując wycinki wyświetl część zmiennejteksto wartości „art” - Wypisz wartość funkcji
dir(tekst) - Zmień cały łańcuch znaków w zmiennej
tekstna wielkie litery, wypisz -
Spróbuj zamienić znak na pozycji 2 w łańcuchu w zmiennej
tekstna znak pPojawia Ci się błąd?
Jest to spodziewane, zapoznaj się z błędem i usuń lub zakomentuj tą linię kodu.
Listy
Działania na listach:
- Stwórz zmienną o nazwie
lista, przypisz do niej rzutowanie na listę (funkcjalist()) zmiennejtekst. - Wykorzystując wycinki zrób tak, żeby lista zawierała jedynie litery słowa
WARTOSCi później dwukropek. - Do listy dodaj kolejny wyraz, niech będzie to kolejna lista
[1,2,3,4,5]. - Z listy usuń wyraz, który jest dwukropkiem.
- Wypisz zmienną lista.
Listy składane (list comprehension):
- Stwórz zmienną jak tutaj:
lista2 = [1,2,3,"banan",100]. - Jako zmienna
lista3, wykorzystaj składnię listy składanej, przeiteruj po każdym wyrazie z listy, do nowej listy zapisz wartość podniesioną do potęgi 2, jeśli wartość jest równa "banan" to ją pomiń. - Stwórz
lista4, wykorzystaj funkcjęrange(), ma ona zawierać co drugą liczbę od 2 do 16. - Wypisz zmienne
lista2,lista3ilista4.
Słowniki
- Stwórz pusty słownik o nazwie
ja - Niech będzie to reprezentacja Twojej osoby, dodaj do niego klucze
imie,nazwisko,wiek,moje_hobby(reprezentowane przez listę z 2 zagnieżdżonymi słownikami o 2 kluczach:nazwaidlaczego) - Wypisz wartość klucza
moje_hobby - Wypisz jedynie nazwę pierwszego hobby
- Wypisz wszystkie klucze naszego słownika
- Sprawdź czy nasz słownik posiada klucz
adres, wypisz zmienną typuboolean
Krotki
- Do zmiennej
krotka1przypisz wartość(1,2,"3",4,2,5) - Wypisz długość zmiennej i pierwszy wyraz
- Sprawdź, ile razy występuje wartość 2 i wypisz
- Spróbuj zmienić pierwszy wyraz na wartość 2
Zbiory
- Stwórz dwa zbiory o nazwach
XiY, nadaj im wartości odpowiednio:set("kalarepa")orazset("lepy") - Wyświetl część wspólną obu zbiorów - można na nich wykonywać podobne operacje jak na zbiorach matematycznych