Geavanceerd Programmeren

in Python

Hoofdstuk 1: Comprenhensions

Les 1: De basis

Demo

Gewone lussen

In een gewone lus lopen we over de lijst.

words = ['I', 'love', 'programming']
output = []
for word in words:
  uppercase_word = word.capitalize()
  output.append(uppercase_word)

Gewone lussen

In een gewone lus lopen we over de lijst.

Dan doen we in de lus iets met ieder element.

words = ['I', 'love', 'programming']
output = []
for word in words:
  uppercase_word = word.capitalize()
  output.append(uppercase_word)

Gewone lussen

In een gewone lus lopen we over de lijst.

Dan doen we in de lus iets met ieder element.

We voegen het daarna aan een nieuwe lege lijst toe

words = ['I', 'love', 'programming']
output = []
for word in words:
  uppercase_word = word.capitalize()
  output.append(uppercase_word)

Gewone lussen

words = ['I', 'love', 'programming']
output = []
for word in words:
  uppercase_word = word.capitalize()
  output.append(uppercase_word)

De code 'klinkt' een beetje zo:

  • "for iedere 'w' in de lijst words, maak het met een hoofdletter, en stop het dan in de nieuwe lijst output"

Gewone lussen

words = ['I', 'love', 'programming']
output = []
for word in words:
  uppercase_word = word.capitalize()
  output.append(uppercase_word)

De code 'klinkt' een beetje zo:

  • "for iedere 'w' in de lijst words, maak het met een hoofdletter, en stop het dan in de nieuwe lijst output

In de nieuwe vorm, wordt het meer dit:

  • "output is een nieuwe lijst, gemaakt door hoofdletters te maken van ieder woord in words"

Gewone lussen

words = ['I', 'love', 'programming']
output = []
for word in words:
  uppercase_word = word.capitalize()
  output.append(uppercase_word)
words = ['I', 'love', 'programming']
output = [word.capitalize() for word in words]

De code 'klinkt' een beetje zo:

  • "for iedere 'w' in de lijst words, maak het met een hoofdletter, en stop het dan in de nieuwe lijst output"

  • In de nieuwe vorm, wordt het meer dit:

  • "output is een nieuwe lijst, gemaakt door hoofdletters te maken van ieder woord in words"

Demo

zelf aan de slag

zelf aan de slag

werk tot de gele postit!

vraag? roze postit!

Hoofdstuk 1: Comprenhensions

Les 2: Filters

Demo

Gewone lussen

  1. In een gewone lus lopen we over de lijst.
temperatures = [21, 10, 19, 20, 0, 31, 12]
above_20 = []
for t in temperatures:
    if t > 20:
        above_20.append(t)

Gewone lussen

  1. In een gewone lus lopen we over de lijst.
  2. Dan kijken er of het element aan de eis voldoet
temperatures = [21, 10, 19, 20, 0, 31, 12]
above_20 = []
for t in temperatures:
    if t > 20:
        above_20.append(t)

Gewone lussen

temperatures = [21, 10, 19, 20, 0, 31, 12]
above_20 = []
for t in temperatures:
    if t > 20:
        above_20.append(t)

De code 'klinkt' een beetje zo:

  • "voor iedere 't' in de lijst temperatures, kijk of t meer is dan 20, en zo ja stop het dan in de nieuwe lijst

Gewone lussen

temperatures = [21, 10, 19, 20, 0, 31, 12]
above_20 = []
for t in temperatures:
    if t > 20:
        above_20.append(t)

In de nieuwe vorm, wordt het meer dit:

  • "boven_20 is een nieuwe lijst, gemaakt met t's uit temperatures, als die boven de 20 zijn

De code 'klinkt' een beetje zo:

  • "voor iedere 't' in de lijst temperatures, kijk of t meer is dan 20, en zo ja stop het dan in de nieuwe lijst

boven_20 = [t for t in temperatures if t > 20]

Demo

zelf aan de slag

werk tot de gele postit!

zelf aan de slag

werk tot de gele postit!

vraag? roze postit!

Hoofdstuk 2: Recursie

Les 1: De basis

Demo

Met deze code kun je

alleen bestanden

printen die op .py

eindigen.

 

bestanden = ['verslag.docx', 'programma.py', 'code.py']

python_bestanden = []
for bestand in bestanden:
    if extentie(bestand) == 'py':
        python_bestanden.append(bestand)

Zoeken

Met deze code kun je

alleen bestanden

printen die op .py

eindigen.

 

Maar... Wat als de lijst ook mapjes (lijsten) met bestanden kan hebben?

bestanden = ['verslag.docx', 'programma.py', 'code.py']

python_bestanden = []
for bestand in bestanden:
    if extentie(bestand) == 'py':
        python_bestanden.append(bestand)

Zoeken

Demo

Er kunnen dus 2 dingen aan de hand zijn:

 

  1. We kijken naar een tekst (bestand)
     
  2. We kijken naar een lijst

 

bestanden = [['verslag_Nl.docx', 'verslag_Du.docx'], 'verhaal.txt', 
              'coderklas.py', ['programma.py', 'code.py']]

Recursie!

Er kunnen dus 2 dingen aan de hand zijn:

 

  1. We kijken naar een tekst (bestand)
    • ​Wat doen we dan?
  2. We kijken naar een lijst

 

bestanden = [['verslag_Nl.docx', 'verslag_Du.docx'], 'verhaal.txt', 
              'coderklas.py', ['programma.py', 'code.py']]

Recursie!

Er kunnen dus 2 dingen aan de hand zijn:

 

  1. We kijken naar een tekst (bestand)
    • ​Wat doen we dan?
  2. We kijken naar een lijst
    • Wat doen we dan?

 

bestanden = [['verslag_Nl.docx', 'verslag_Du.docx'], 'verhaal.txt', 
              'coderklas.py', ['programma.py', 'code.py']]

Recursie!

Demo

zelf aan de slag

werk tot de gele postit!

vraag? roze postit!

Hoofdstuk 3:

Higher-order functions

Les 1: Lambdas

def plus_een(n):
    return n + 1

print(plus_een(5))

Jullie kunnen al een functie maken.

Maar wist je dat je die functie ook in 1 regel kan maken?

functies in 1 regel!

def plus_een(n):
    return n + 1

print(plus_een(5))

Jullie kunnen al een functie maken.

Maar wist je dat je die functie ook in 1 regel kan maken?

functies in 1 regel!

ook_plus_een = lambda n: n + 1

print(ook_plus_een(6))

demo

zelf aan de slag

werk tot de gele postit!

vraag? roze postit!

Hoofdstuk 3:

Higher-order functions

Les 2: Functies als argumenten

def circumference(r):
    return 2 * math.pi * r
  
print(circumference(1))
c = circumference
print(c)

Jullie kunnen al een functie maken.

Maar wist je dat je een functie ook gewoon op kan slaan?

functies opslaan?

demo

def apply(f, a, b):
    return(f(a,b))

def add(x, y):
    return x + y

result = apply(add, 5, 6)

print(result)

Jullie kunnen al een functie maken.

Maar wist je dat je een functie ook gewoon op kan slaan?

 

En je kunt functies dan ook als invoer gebruiken voor andere functies!

functies opslaan?

demo

zelf aan de slag

werk tot de gele postit!

vraag? roze postit!

Made with Slides.com