Ga naar hoofdinhoud

10.4 Bouwsteen 1 — items in Python

Leerdoel: je slaat de items op als een lijst van (waarde, gewicht) tuples, en kunt erin "kijken".

Wat we willen

De items uit de afbeelding van je docent (en de rest van deze track):

ItemWaardeGewicht
111
262
3185
4226
5287

In Python: een lijst van tuples, waarbij elke tuple (waarde, gewicht) is.

items = [(1, 1), (6, 2), (18, 5), (22, 6), (28, 7)]

Elk element is een tuple (waarde, gewicht) voor één item.

Indexen

items[0] = (1, 1) — de eerste tuple. items[2] = (18, 5) — de derde tuple (item 3 uit de tabel).

Let op: Python begint te tellen bij 0. De tabel hierboven gebruikt 1-gebaseerde nummering ("item 1, item 2, ..."). Onze code gebruikt 0-gebaseerde indexen. Dat is even wennen, maar consistent met al je andere Python-werk.

Tuple uitpakken

Met tuple-unpacking pak je waarde en gewicht in één regel:

waarde, gewicht = items[2]
print(waarde, gewicht) # 18 5

Of zonder unpacking:

print(items[2][0]) # 18 (waarde)
print(items[2][1]) # 5 (gewicht)

Beide werken; unpacking leest beter.

Voorspel

Wat denk je dat dit print?

items = [(1, 1), (6, 2), (18, 5), (22, 6), (28, 7)]
n = len(items)

for i in range(n):
waarde, gewicht = items[i]
print(f"item {i + 1}: waarde={waarde}, gewicht={gewicht}")
Antwoord
item 1: waarde=1, gewicht=1
item 2: waarde=6, gewicht=2
item 3: waarde=18, gewicht=5
item 4: waarde=22, gewicht=6
item 5: waarde=28, gewicht=7

We tellen vanaf i + 1 om de tabel-nummering te matchen, maar gebruiken items[i] om de echte Python-index op te halen.

Bouw zelf en test

Maak een functie item_info(items, i) die de string "item N: waarde=V, gewicht=G" returnt voor item op Python-index i.

Python
Code-omgeving wordt voorbereid…
Tip

Eén regel werk:

waarde, gewicht = items[i]
return f"item {i + 1}: waarde={waarde}, gewicht={gewicht}"

Een f-string (f"...") staat Python toe om variabelen direct in een tekst te zetten met {...}.

Wat nu nog mist

We hebben de items. Nu hebben we ook een tabel nodig waar we de OPT-waardes per (i, w) in opslaan. Op de volgende pagina maken we hem leeg aan.

Door naar stap 5: lege tabel →.