Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 4 z 416/36 w kursie~10 min
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().

Python
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).

Python
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ą.

Python
float("3.14")      # 3.14
float("1e3")       # 1000.0
float("inf")       # inf
float("nan")       # nan

str(): "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.).

Python
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.

Python
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

Python
testo = input("età: ")
try:
    eta = int(testo)
except ValueError:
    print(f"non è un numero: {testo!r}")
    eta = None

Ocena 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

Ćwiczenie#python.m4.l4.e1
Próby: 0Ładowanie...

Mając dane `a = '10'` i `b = '32'` (ciągi znaków), oblicz `total` jako ich GANZZAHLIGĄ sumę. Oceń `total`.

Ładowanie edytora...
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

Ćwiczenie#python.m4.l4.e2
Próby: 0Ładowanie...

Mając daną listę `values = ['', 'x', 0, None, 1, []]`, utwórz `truthy` zawierające TYLKO elementy prawdziwe (truthy) przy użyciu bool(). Oceń `truthy`.

Ładowanie edytora...
Pokaż wskazówkę

List comprehension z filtrem bool(v) (lub po prostu 'if v').

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#python.m4.l4.e3
Próby: 0Ładowanie...

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ą.

Ładowanie edytora...
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