Typy danych – tekst, liczby, prawda i fałsz
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Zapis 5 i zapis "5" wyglądają na ekranie tak samo, ale Python traktuje je zupełnie inaczej. Pierwszy to liczba, którą można dodawać. Drugi to tekst, który można sklejać. Zrozumienie tej jednej rzeczy wyeliminuje połowę błędów w najbliższych tygodniach.
Po tej lekcji:
- wymienisz cztery typy danych i podasz przykład każdego,
- wyjaśnisz, czym różni się
5od"5", - zamienisz tekst na liczbę i liczbę na tekst,
- będziesz wiedzieć, dlaczego
4,25z przecinkiem nie zadziała.
Dlaczego typ ma znaczenie
print(5 + 5) # 10
print("5" + "5") # 55 – dla tekstu plus oznacza sklejanie
print(5 + "5") # TypeError
Python patrzy nie tylko na wartość, ale i na jej rodzaj. Liczby dodaje, teksty skleja, a mieszanki jednego z drugim nie przyjmuje.
Cztery typy w zupełności wystarczą
- str – tekst. Zawsze w cudzysłowie. Może zawierać cyfry, spacje, cokolwiek.
- int – liczba całkowita. Bez kropki, bez cudzysłowu.
- float – liczba z częścią dziesiętną. Kropka, nie przecinek.
- bool – tylko dwie wartości:
TruealboFalse. Z wielkiej litery, bez cudzysłowu.
imie = "Anna" # str
wiek = 17 # int
waga = 54.5 # float
zdal = True # bool
nr = "17" # uwaga: to str, nie liczba!
Typ bierze się z tego, jak zapiszesz wartość – nigdzie go nie deklarujesz.
4,25z przecinkiem to dla Pythona nie jest liczba. Musi być4.25.
type – zapytaj Pythona, z czym masz do czynienia
Funkcja type zwraca rodzaj wartości. Działa na wartości i na zmiennej.
print(type(17)) # <class 'int'>
print(type("17")) # <class 'str'>
print(type(4.25)) # <class 'float'>
print(type(True)) # <class 'bool'>
To twoje pierwsze narzędzie diagnostyczne. Gdy dodawanie nie działa, wypisanie typów bywa szybsze niż wpatrywanie się w kod.
Konwersje – zamiana jednego typu na drugi
int("17")daje liczbę 17.float("4.25")daje liczbę 4.25.str(17)daje tekst "17".
Zamiana nie zmienia oryginału. Funkcje konwersji tworzą nową wartość – zmienna podana w nawiasie zostaje nietknięta, chyba że wynik przypiszesz z powrotem do niej.
tekst = "17"
liczba = int(tekst)
print(liczba + 1) # 18
print(tekst) # 17 – nadal tekst
Kiedy konwersja się uda, a kiedy nie
int("17")daje 17 – w tekście jest poprawna liczba całkowita.int(" 17 ")daje 17 – spacje na brzegach nie przeszkadzają.int("cztery")kończy się błędem ValueError – w środku nie ma zapisu liczby.int("4.5")to też ValueError – kropka, czyli to nie jest liczba całkowita.int("4,5")to też ValueError – przecinek nie jest akceptowany nigdy.float("4.5")daje 4.5 – float rozumie kropkę dziesiętną.int(float("4.5"))daje 4 – najpierw float, potem int. Uwaga: int obcina, nie zaokrągla.
W drugą stronę zawsze jest bezpiecznie: str przyjmie dowolną wartość i nigdy nie zawiedzie.
Spróbuj sam
W kodzie z lekcji na końcu są zakomentowane błędne konwersje. Usuń # z jednej z nich, uruchom program i przeczytaj komunikat.
Zadania z lekcji:
- Utwórz po jednej zmiennej każdego z czterech typów. Wypisz dla każdej wartość i typ, korzystając z funkcji
type. - Sprawdź, ile wynosi
"7" + "7", a ile7 + 7. Wynik obu działań opisz w komentarzu. - Masz zmienną
tekst = "25". Zamień ją na liczbę, dodaj do niej 5 i wypisz wynik. - Napisz program, który celowo wywoła ValueError przy konwersji, i zapisz w komentarzu pełną treść komunikatu.
Sprawdź się
- Wymienię cztery typy i podam przykład każdego.
- Wyjaśnię, czym różni się
5od"5". - Zamienię tekst na liczbę i liczbę na tekst.
- Wiem, dlaczego
4,25z przecinkiem nie zadziała.
Na następnej lekcji: operatory arytmetyczne. Dzielenie w Pythonie ma trzy odmiany, a jedna z nich – reszta z dzielenia – okaże się najbardziej przydatna ze wszystkich.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.