Direct naar de hoofdinhoud
Module 4 · Les 4 van 416/36 in de cursus~10 min
Modulelessen (4/4)

Type conversies

Python is sterk getypeerd: het voegt nooit een string toe aan een getal, tenzij jij dat doet zeg het maar. Om van het ene type naar het andere te gaan, gebruik je de constructorfuncties: 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() met tekenreeksen

int("42") werkt; int("42.5") verhoogt ValueError. Voor decimale tekenreeksen geldt ga eerst door float: int(float("42.5")) → 42 (kapt af, niet rond).

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() met tekenreeksen

Accepteert decimale en wetenschappelijke notatie.

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

str(): de "vriendelijke" conversie

str(x) roept intern x.__str__() aan om de "menselijke" weergave te krijgen. Er is ook repr(x) voor de "debugger"-weergave, vaak meer expliciet (met aanhalingstekens voor tekenreeksen, enz.).

Python
str(3.14)       # '3.14'
str([1, 2])     # '[1, 2]'
str(True)       # 'True'

bool() en waarheidsgetrouwheid

bool(x) retourneert False alleen voor de valse waarden van Python:

  • False, None
  • nul cijfers: 0, 0.0
  • lege containers: "", [], (), {}, set()

Al het andere is waarheid.

Python
bool(0)       # False
bool("")      # False
bool([])      # False
bool("0")     # True  !  (stringa non vuota)
bool([0])     # True  !  (lista non vuota, anche se contiene 0)

Patroon: veilige invoerparsering

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

Booleaanse evaluatie (waarheid)

In Python heeft elk object een impliciete waarheidswaarde. U kunt de Booleaanse waarde van elk object controleren met behulp van de functie bool(...). Lege verzamelingen (bijvoorbeeld "", [], {}, set()) en nulwaarden (0, 0.0) resulteren altijd in False. Alle andere objecten resulteren in True.

Probeer het

Oefening#python.m4.l4.e1
Pogingen: 0Laden…

Gegeven `a = '10'` en `b = '32'` (strings), berekent u `total` als hun INTEGER som. Evalueer 'totaal'.

Editor laden…
Toon hint

int(a) + int(b), anders voeg je de strings samen.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#python.m4.l4.e2
Pogingen: 0Laden…

Gegeven de lijst `values ​​= ['', 'x', 0, Geen, 1, []]`, bouw `truthy` met ALLEEN de waarheidselementen met behulp van bool(). Evalueer 'waarheid'.

Editor laden…
Toon hint

Lijstbegrip met filter bool(v) (of gewoon 'if v').

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#python.m4.l4.e3
Pogingen: 0Laden…

Gegeven de lijst met strings \`string_numbers = ["1", "2", "3"]\`, converteer je elk element naar een geheel getal met behulp van \`int()\` en tel je ze bij elkaar op om de waarde \`6\` te verkrijgen. Sla de som op in \`sum_val\` en evalueer deze.

Editor laden…
Toon hint

Toegang tot elementen per index, b.v. int(string_numbers[0]), en tel ze op.

Oplossing beschikbaar na 3 pogingen