01 - De input( )-functie
- De input( )-functie wacht op de gebruiker die tekst moet invoeren
- De ingevoerde waarde wordt opgeslagen in een variabele
- De input( )-functie heeft één argument: de prompt (de instructietekst die je aan de gebruiker wilt laten zien)
- Veel editors voeren geen Python-code uit; maak gebruik van een terminal om je programma uit te voeren
message = input('Geef een getal onder de 432: ')
print(message)
Geef een getal onder de 432: 256
256
- De prompt kan ook in een variabele worden gezet
- Let op de extra spaties die nodig zijn om de prompt en de invoer te scheiden van elkaar
prompt = "In de omgekeerde wereld is niks zoals het is,"
prompt += "\nals ik voor zeg is het achter, als ik raak zeg is het.. "
message = input(prompt)
print("Echt " + message)
In de omgekeerde wereld is niks zoals het is,
als ik voor zeg is het achter, als ik raak zeg is het.. mis
Echt mis
- De input( )-functie interpreteert alle invoer standaard als een string
- Wanneer je de invoer gebruikt om mee te rekenen krijg je een foutmelding
- Gebruik de int( )-functie om de invoer om te zetten naar een integer
prompt = "Reken uit je hoofd 16 * 63? "
answer = input(prompt)
if int(answer) == 1008:
print("Wel goed, maar ongeloofwaardig")
else:
print("Helaas, de meesten hebben hem fout")
Reken uit je hoofd 16 * 63? 12
Helaas, de meesten hebben hem fout
De modulo operator
- De modulo operator wordt gebruikt met het % procent teken
- Modulo deelt het eerste getal door het tweede getal, maar geeft alleen de restwaarde terug
- Wanneer het eerste getal deelbaar is door het tweede getal retourneert het een 0
# 15 / 3 = 5 --- restwaarde is 0
var1 = 15
var2 = 3
answer = var1 % var2
print(answer)
0
- Even getallen zijn altijd deelbaar door 2
number = input('Geef een getal op: ')
number = int(number)
if number % 2 == 0:
print('Het getal ' + str(number) + " is een even getal")
else:
print('Het getal ' + str(number) + " is een oneven getal")
Geef een getal op: 24
Het getal 24 is een even getal
02 - De while-loop
- De for-loop pakt een verzameling items en voert een blok code voor elk item in de verzameling één keer uit
- De while-loop draait daarentegen zolang er (while) aan een bepaalde voorwaarde wordt voldaan
current_number = 0
while current_number <= 5:
print(current_number)
current_number += 1
0
1
2
3
4
5
- Met een while-loop kun je een applicatie oneindig lang laten doorlopen
- Door een stop-actie in te voegen kan de gebruiker zelf bepalen wanneer het moet stoppen
- De message variabele met een lege string is nodig om de eerste keer door de while-loop te gaan
prompt = "Niemand hier die vindt een boete, fine.: "
prompt += "\nType 'stop' om te stoppen\n"
message = ''
while message != 'stop':
message = input(prompt)
print(message)
klopt
stop
- Om de stop-actie niet ook te printen kan een if-conditie worden toegevoegd
prompt = "Door de fiets te nemen is mijn weg, road."
prompt += "\nType 'stop' om te stoppen\n"
message = ''
while message != 'stop':
message = input(prompt)
if message != 'stop':
print(message)
klopt
- In een grotere applicatie zijn er mogelijk meerdere condities waarmee de applicatie gestopt kan worden
- Als meerdere variabelen gecontroleerd moeten worden tijdens een applicatie kan een 'vlag' gebruikt worden
- Een vlag is één variabele die door de loop gecontroleerd wordt maar de vlag kan door meerdere processen beïnvloed worden
prompt = "Was het nou zo dat mijn loon als goud, gold "
prompt += "\nType 'stop' om te stoppen\n"
active = True
while active:
message = input(prompt)
if message == 'stop':
active = False
else:
print(message)
tja, dan was het anders
03 - Break & Continue
- Om een while-loop meteen te stoppen gebruik je een break
- Een while meteen gevolgd door een True wordt voor altijd uitgevoerd
- Een while True wordt alleen gestopt met een break
- Je kunt de break in elke loop gebruiken (ook een for-loop)
prompt = "Hi, my name is Optimus Prime. \nWe are Autonomous Robotic Organisms from the planet Cybertron."
prompt += "\nType 'stop' om te stoppen\n"
while True:
message = input(prompt)
if message == 'stop':
break
else:
print(message)
print("I know that this is not the end, but merely a new beginning. \nAnother transformation.")
hi
I know that this is not the end, but merely a new beginning.
Another transformation.
- In plaats van het afbreken van een loop kun je ook terugkeren naar het begin van een loop
- Met een continue kun je, op basis van een conditie, terugkeren naar het begin
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
1
3
5
7
9
05 - While-loops met lists en dictionaries
- Voor het bijhouden van veel gegevens kun je lists of dictionaries gebruiken in je while-loop
- Een for-loop is effectief voor het doorlopen van een list, maar je mag de list niet in een for-loop aanpassen
- Python krijgt dan problemen met het bijhouden van de items in de list
- Om een list aan te passen terwijl je ermee werkt gebruik je een while-loop
- Door while-loops te gebruiken bij lists en dictionaries kun je veel invoer verzamelen, opslaan en ordenen
Items van de ene lijst naar de andere verplaatsen
- De while draait zolang de list hz niet leeg is
hz = [999, 256, 999, 288, 324, 241.33, 384, 432, 486, 512]
played = []
while hz:
tone = hz.pop()
print('De toon: ' + str(tone) + 'Hz wordt gespeeld')
played.append(tone)
print('\nDe volgende tonen heeft u gehoord')
print(played)
De toon: 512Hz wordt gespeeld
De toon: 486Hz wordt gespeeld
De toon: 432Hz wordt gespeeld
De toon: 384Hz wordt gespeeld
De toon: 241.33Hz wordt gespeeld
De toon: 324Hz wordt gespeeld
De toon: 288Hz wordt gespeeld
De toon: 999Hz wordt gespeeld
De toon: 256Hz wordt gespeeld
De toon: 999Hz wordt gespeeld
De volgende tonen heeft u gehoord
[512, 486, 432, 384, 241.33, 324, 288, 999, 256, 999]
Alle items met een bepaalde waarde uit een lijst verwijderen
- In H3 is de .remove( )-functie gebruikt om een specifieke waarde uit een lijst te verwijderen
- De .remove( )-functie werkt zoals verwacht als de waarde 1 x in de lijst voorkomt
- Als je waarden wilt verwijderen die meerdere keren voorkomen gebruik dan ook een while-loop
hz = [999, 256, 999, 288, 324, 241.33, 384, 432, 486, 512]
print(hz)
while 999 in hz:
hz.remove(999)
print(hz)
[999, 256, 999, 288, 324, 241.33, 384, 432, 486, 512]
[256, 288, 324, 241.33, 384, 432, 486, 512]
Een dictionary vullen met invoer van gebruiker
# Ter herinnering: de (oude) natuurtoonladder
# Do, Re, Mi, Fa, Sol, La, Si, Do
hz = [256, 288, 324, 241.33, 384, 432, 486, 512]
print('8 frequenties uit de toonladder: ')
print(hz)
print('\n')
# Maken van een lege dictionary
sound = {}
# Zet een vlag aan
active = True
# Input vragen en een dictionary vullen
while active:
question1 = input('Type een toonklank: ')
question2 = input('Geef de bijbehorende frequentie: ')
sound[question1] = question2
repeat = input('Wil je nog een klank toevoegen? (j/n)')
if repeat == 'n':
active = False
# De gevulde dictionary printen
print('\n--- Resultaat ---')
for tone, freq in sound.items():
print('Bij ' + tone + ' hoort de harmoniserende ' + str(freq) + 'Hz frequentie.')
8 frequenties uit de toonladder:
[256, 288, 324, 241.33, 384, 432, 486, 512]
--- Resultaat ---
Bij Do hoort de harmoniserende 256Hz frequentie.
Bij Re hoort de harmoniserende 288Hz frequentie.