Rozdział 4 · Python lubi liczby
Konwersja typów liczb
Liczby można przekształcić w siebie nawzajem i w tekst, ale nie zawsze odwrotnie i nie zawsze, jak się wydaje na pierwszy rzut oka.
Każdy typ numeryczny ma własną funkcję transformatora o tej samej nazwie:
int(), float(),
complex(). Ponadto każdą liczbę można przekonwertować na tekst
funkcją str() — i odwrotnie, tekst podobny do liczby może być
Odwróć to.
preobrazovanie.py
whole = int(3.99)
print(whole) #3 – część ułamkowa jest odrzucana zamiast zaokrąglonej
decimal = float(7)
print(decimal) # 7.0
text = str(42)
print(text, type(text)) # "42" <class 'str'>
int() odrzuca część ułamkową, zamiast zaokrąglać
int(3.99) równa się 3, nie 4 jest obcięcie (truncation) ku zeru, nie zaokrąglając. round() (Rozdział 4.13).Kierunek obcięcia jest również ważny dla liczb ujemnych — int()
zawsze zmierza do zera, a nie „w dół” w sensie matematycznym:
int_otricatelnoe.py
print(int(3.9)) # 3
print(int(-3.9)) #-3 zamiast -4
Przekształć tekst na liczbę
tekst_v_chislo.py
age_text = "10"
age = int(age_text)
print(age + 5) # 15 — teraz to prawdziwa liczba
Nie każdy tekst da się przekonwertować
int("десять") spowoduje ValueError - Python nie potrafi odczytać liczb w słowach. Można przekonwertować tylko tekst wyglądający jak liczba.Parsowanie tekstu z określeniem systemu liczbowego
Widzieliśmy to już w sekcji 4.3 – int() potrafi odczytać tekst, który nie jest w stanie
Tylko w systemie dziesiętnym:
s_osnovaniem.py
print(int("1010", 2)) # 10
print(int("FF", 16)) # 255
Tworzenie łańcuch znaków z liczb: konkatenacja → f-łańcuch znaków
Klasyczne podejście
age = 10
message = „Wiek: ” + str(age) + „ lat”
print(message)
# koniecznie ręcznie opakować liczbę w str()
Nowoczesny Python 3.14
age = 10
message = f"Wiek: {age} lat"
print(message)
#f-łańcuch znaków wykonuje konwersję wewnątrz samego {}
Co używać dzisiaj: f-stringi (f-strings), pojawiły się w Python 3.6 i od tego czasu stały się standardem. Są krótsze, mniej podatne na błędy (nie trzeba pamiętać o str()) i pozwalają od razu pisać wyrażenia wewnątrz nawiasów klamrowych.
Praktyka: int(), float(), str() i parsowanie baz
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji