Lekcje modułu (4/4)
Konwersje typów
Python jest silnie typowany: nigdy nie doda ciągu znaków do liczby, chyba że tak
nakażesz. Aby przejść z jednego typu na inny, używa się funkcji konstruktora:
int(), float(), str(), bool(), list(), tuple(), set().
int("42") # 42
float("3.14") # 3.14
str(42) # '42'
list("abc") # ['a', 'b', 'c']
tuple([1, 2]) # (1, 2)
set([1, 1, 2]) # {1, 2}int() z ciągami znaków
int("42") działa; int("42.5") zgłasza ValueError. W przypadku ciągów dziesiętnych
najpierw przejdź przez float: int(float("42.5")) → 42 (odrzuca część
ułamkową, nie zaokrągla).
int("42") # 42
int(" 42 ") # 42 (strip automatico degli spazi)
int("42.5") # ValueError
int(float("42.5")) # 42
int("ff", 16) # 255 (base esplicita)float() z ciągami znaków
Akceptuje notację dziesiętną i naukową.
float("3.14") # 3.14
float("1e3") # 1000.0
float("inf") # inf
float("nan") # nanstr(): "przyjazna" konwersja
str(x) wewnętrznie wywołuje x.__str__() aby uzyskać reprezentację "ludzką".
Istnieje również repr(x) dla reprezentacji "debuggera", często bardziej
jawnej (z cudzysłowami dla ciągów znaków itp.).
str(3.14) # '3.14'
str([1, 2]) # '[1, 2]'
str(True) # 'True'bool() i truthiness
bool(x) zwraca False tylko dla wartości falsy w Pythonie:
False,None- wartości zerowe:
0,0.0 - puste kontenery:
"",[],(),{},set()
Wszystko inne jest truthy.
bool(0) # False
bool("") # False
bool([]) # False
bool("0") # True ! (stringa non vuota)
bool([0]) # True ! (lista non vuota, anche se contiene 0)Wzorzec: bezpieczne parsowanie danych wejściowych
testo = input("età: ")
try:
eta = int(testo)
except ValueError:
print(f"non è un numero: {testo!r}")
eta = NoneOcena logiczna (Truthiness)
W Pythonie każdy obiekt ma ukrytą wartość logiczną. Możesz sprawdzić wartość logiczną dowolnego obiektu za pomocą funkcji bool(...). Puste kolekcje (np. "", [], {}, set()) oraz wartości zerowe (0, 0.0) zawsze zwracają False. Wszystkie inne obiekty dają True.
Spróbuj sam
Mając dane `a = '10'` i `b = '32'` (ciągi znaków), oblicz `total` jako ich GANZZAHLIGĄ sumę. Oceń `total`.
Pokaż wskazówkę
int(a) + int(b), w przeciwnym razie połączysz ciągi znaków.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Mając daną listę `values = ['', 'x', 0, None, 1, []]`, utwórz `truthy` zawierające TYLKO elementy prawdziwe (truthy) przy użyciu bool(). Oceń `truthy`.
Pokaż wskazówkę
List comprehension z filtrem bool(v) (lub po prostu 'if v').
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Mając daną listę ciągów znaków `string_numbers = ["1", "2", "3"]`, przekonwertuj każdy element na liczbę całkowitą za pomocą `int()` i zsumuj je, aby otrzymać wartość `6`. Zapisz sumę w zmiennej `sum_val` i oceń ją.
Pokaż wskazówkę
Uzyskaj dostęp do elementów przez indeks, np. int(string_numbers[0]), i zsumuj je.
Rozwiązanie dostępne po 3 próbach