Python for-loop

T. Issaris

17 September 2021

Herhalen van code

for getal in [0, 1, 2, 3]:
    print("Hallo")

Hier wordt de print functie 4 maal uitgevoerd, en dus “Hallo” 4 keer getoond.

Herhalen van code

De for-lus, wordt namelijk 1 keer per element in de opgegeven lijst uitgevoerd.

for getal in [0, 1, 2, 3, 4]:
    print("Hallo")

In dit geval dus 5 keer.

Herhalen van code

De lijst hoeft niet uit getallen te bestaan maar mag ook uit strings bestaan:

for naam in ["Andreas", "Zarah", "Alexander"]:
    print("Hallo")

Hier wordt “Hallo” 3 keer getoond omdat er 3 strings in de lijst staan.

Variabele in for-loop

De variabele “i” neemt telkens de volgende waarde uit de lijst aan.

for naam in ["Andreas", "Zarah", "Alexander"]:
    print(naam)

Hier worden achtereenvolgens de namen Andreas, Zarah en Alexander getoond.

Equivalent

for naam in ["Andreas", "Zarah", "Alexander"]:
    print(naam)
naam = "Andreas"
print(naam)
naam = "Zarah"
print(naam)
naam = "Alexander"
print(naam)

Equivalent

for i in [1, 7]:
    print(i)
i = 1
print(i)
i = 7
print(i)

Range()

Automatisch lijsten maken

range(aantal)

We kunnen gebruik maken van range() om zo’n lijst getallen automatisch aan te maken:

range(4)

De getallen: 0,1,2,3

range(aantal)

Deze lijst kunnen we gebruiken in onze for-loop:

for i in range(4):
    print("Hallo")

range(x)

Ook hier neemt de variabele “i” telkens de volgende waarde uit de “lijst” aan.

for i in range(4):
    print(i)

range(start, stop)

Je kan ook een start- en stopwaarde opgeven:

for i in range(100, 104):
    print(i)

Dit geeft de getallen: 100, 101, 102, 103

Dubbele for-loop

Dubbele for-loop

In een for-loop mag je alle code gebruiken, dus ook een andere for-loop. Dit noemt men een geneste of dubbele for-loop:

for i in range(4):
    for naam in ["Andreas", "Zarah", "Alexander"]:
        print(f"{i} Hallo {naam}")

SVG Bestanden

Hoe kunnen we nu meerdere rechthoeken tekenen?

For-loop

Met behulp van een for-loop kunnen we in Python een bepaald stuk code meermaals uitvoeren:

for i in [0, 1, 2]:
    bestand.write('<rect x="0">')

Python voert de code voor elk element in de lijst 1 keer uit.

For-loop

De waarde in de lijst wordt in de variabele “i” opgeslagen, en we kunnen deze dan ook gebruiken:

for i in [0, 1, 2]:
    bestand.write(f'<rect x="{i}">')

For-loop

De lijst mag ook buiten de for-lus gedefinieerd worden:

getallen = [0, 1, 2]
for i in getallen:
    bestand.write(f'<rect x="{i}">')

For-loop

Je kan uiteraard ook eerst nog berekeningen uitvoeren voordat je de uiteindelijke waarde gebruikt:

getallen = [0, 1, 2]
for i in getallen:
    x = i * 10
    bestand.write(f'<rect x="{x}">')

For-loop

De lijst mag complexer zijn (een geneste lijst):

info = [
    [0, "A"],
    [1, "B"],
    [2, "C"],
]
for i in info:
    bestand.write(f'<rect x="{i}">')

Maar let op: <rect x=“[0, "A"]”>

For-loop

Dus, kan je indexatie gebruiken om de elementen uit de lijst te gebruiken:

info = [
    [0, "A"],
    [1, "B"],
    [2, "C"],
]
for i in info:
    x = i[0]
    y = i[1]
    bestand.write(f'<rect x="{x}" y="{y}">')

For-loop

Of, je kan Python ook vragen om de elementen uit de lijst als afzonderlijke variabelen op te slaan:

info = [
    [0, "A"],
    [1, "B"],
    [2, "C"],
]
for i, j in info:
    bestand.write(f'<rect x="{i}" y="{j}">')

For-loop

Of andere informatie bevatten, zoals informatie over smartphones:

phones = [
    [2007, 2.0, "apple"],
    [2008, 3.0, "apple"],
    [2010, 5.0, "samsung"],
]
for i, j, k in phones:
    bestand.write(f'<rect x="{i}" y="{j}">')

For-loop

Je kan ook if-condities gebruiken in de for-lus:

phones = [
    [2007, 2.0, "apple"],
    [2008, 3.0, "apple"],
    [2010, 5.0, "samsung"],
]
for i, j, k in phones:
    if k == "apple":
        kleur = "red"
    else:
        kleur = "blue"
    bestand.write(f'<rect x="{i}" y="{j}" fill="{kleur}">')

For-loop

Als de waardes in de lijst niet goed uitkomen voor je SVG, kan je er ook eerst berekenen op uitvoeren:

phones = [
    [2007, 2.0, "apple"],
    [2008, 3.0, "apple"],
    [2010, 5.0, "samsung"],
]
for i, j, k in phones:
    x = i / 100
    y = j * 10
    bestand.write(f'<rect x="{x}" y="{y}" fill="red">')
// reveal.js plugins