Les 6: Input en functies

Afdrukken

In deze les gaan we leren hoe we de computer ons iets kan vragen.Telkens de computer een andere tafel moet uitrekenen, moeten we ons programma aanpassen.
Het het niet leuker zijn als de computer ons de vraag stelt welke tafel we moeten uitrekenen?
Daarvoor maken we gebruik van INPUT.

Start maar terug de cmd of opdrachtprompt op.
We gaan eerst een kopie van ons programma lesje5.py maken.
Tik maar eens het volgende in:

copy lesje5.py lesje6.py

Nu starten we notepad op met het volgend commando:

notepad lesje6.py

En dit is ons programma:

getal = input("Welke tafel wil je zien? De tafel van ...")
print ("Dit is de tafel van ", getal)
print ("-----------------------")
for teller in range(1,11):
    print(teller, " x ", getal, " = ", teller * getal)
print ()
print ("Programmeren is leuk!")

Start nu maar het programma eens op. Geef het cijfer in. En wat doet de computer? Wat is hier nu gebeurd:

>python lesje6.py
Welke tafel wil je zien? De tafel van ...8
Dit is de tafel van  8
-----------------------
1  x  8  =  8
2  x  8  =  88
3  x  8  =  888
4  x  8  =  8888
5  x  8  =  88888
6  x  8  =  888888
7  x  8  =  8888888
8  x  8  =  88888888
9  x  8  =  888888888
10  x  8  =  8888888888

Programmeren is leuk!

De computer ziet wat je tikt als een string (= stukje tekst) en niet als een getal!
Je zou dus ook in plaats van een cijfer in te tikken daar bijvoorbeeld "koekoek" van maken:

D:\Python33\Voorbeelden>python lesje6.py
Welke tafel wil je zien? De tafel van ...Koekoek
Dit is de tafel van  Koekoek
-----------------------
1  x  Koekoek  =  Koekoek
2  x  Koekoek  =  KoekoekKoekoek
3  x  Koekoek  =  KoekoekKoekoekKoekoek
4  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoek
5  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoekKoekoek
6  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoekKoekoekKoekoek
7  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoek
8  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoek
9  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoek
10  x  Koekoek  =  KoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoekKoekoek

Programmeren is leuk!

We gaan dat oplossen door gebruik te maken van functies.

Functies

Hoe kunnen we er nu voor zorgen dat de computer de input als een getal ziet en niet als een string?
Daarvoor gaan we gebruik maken van functies (= functions in het Engels).
Zonder dat je het wist maak je alm gebruik van functies.
Functies die je al hebt gebruikt zijn: PRINT, FOR, RANGE en INPUT.
Een functies is een soort taak die de computer moet uitvoeren. Je zou het ook kunnen zien als een programma in een programma.
Een functie kan soms zeer ingewikkelde dingen doen.
Gelukkig bestaat er een functie die tekst kan omzetten naar een geheel getal (= integer in het Engels). Dat is de functie int().

Als we weten wat in het doosje getal zit, kunnen we het veranderen naar een cijfer als volgt:

getal = int(getal)

Wat we hier zeggen is het volgende: haal uit het doosje wat er in zit, verander dat door een cijfer en zet het terug in het doosje.
Ons programma ziet er nu zo uit:

getal = input("Welke tafel wil je zien? De tafel van ...")
print ("Dit is de tafel van ", getal)
getal = int(getal)
print ("-----------------------")
for teller in range(1,11):
    print(teller, " x ", getal, " = ", teller * getal)
print ()
print ("Programmeren is leuk!")

En als we het programma eens uitvoeren:

>python lesje6.py
Welke tafel wil je zien? De tafel van ...8
Dit is de tafel van  8
-----------------------
1  x  8  =  8
2  x  8  =  16
3  x  8  =  24
4  x  8  =  32
5  x  8  =  40
6  x  8  =  48
7  x  8  =  56
8  x  8  =  64
9  x  8  =  72
10  x  8  =  80

Programmeren is leuk!

Dat ziet er al veel beter uit. Vind je ook?
Wat gebeurd er als de input een tekst is zoals "koekoek"?

>python lesje6.py
Welke tafel wil je zien? De tafel van ...koekoek
Dit is de tafel van  koekoek
Traceback (most recent call last):
  File "lesje6.py", line 3, in <module>
    getal = int(getal)
ValueError: invalid literal for int() with base 10: 'koekoek'

De computer weet niet hoe hij de tekst naar een integer kan omzetten een toont de fout. Hoe we dat kunnen oplossen is voor een volgende les.

Een moeilijke opdracht

In de vorige les hebben we ook gezien dat je kan veranderen tot hoever de computer de tafel uitrekent: tot 20, of zelfs tot 1000.
Kun jij je programma nu zo veranderen dat het vraagt tot hoever je de tafel wil laten uitrekenen?

En extra dubbel moeilijk voor als je een 10+ wilt verdienen:
kun je er dan ook voor zorgen dat als ik zeg ‘tot en met 10′, dat hij dan ook echt tot en met 10 gaat en niet na 9 ophoudt?
Een tip: denk aan getal = int(getal)

Wat heb je geleerd?

  • Met input kun het programma dingen laten vragen.
  • Als je programma duidelijke vragen stelt kunnen andere mensen het ook gebruiken.
  • In Python kun je de tafel van ‘koekoek’ uitrekenen.
  • Een functie is een soort taak voor de computer.
  • Een functie gebruikt altijd haakje ().
  • Computers zijn "pietje precies". Als je iets vergeet maken ze er een warboel van.

Verschillen in Python versie 2 en 3

Opgelet: Dit is nogal verwarrend. In python versie 2 zal de computer het programma op een andere manier uitvoeren.
Je hebt wat ik je hier vertel niet nodig voor de volgende oefeningen, maar voor de kinderen met gevoel voor detail geef ik het toch even mee.

In python 2.x zou het programma er zo kunnen uitzien voor de tafels:

print "Dit is de tafel van ", getal
print "-----------------------"
for teller in range(1,11):
    print teller, " x ", getal, " = ", teller * getal
print
print "Programmeren is leuk!"

Als we het programma uitvoeren zien we het volgende op het scherm:

 python lesje6.py
Welke tafel wil je zien? De tafel van ...4
Dit is de tafel van  4
-----------------------
1  x  4  =  4
2  x  4  =  8
3  x  4  =  12
4  x  4  =  16
5  x  4  =  20
6  x  4  =  24
7  x  4  =  28
8  x  4  =  32
9  x  4  =  36
10  x  4  =  40

Programmeren is leuk!

Dat is anders dan in python versie 3.
Als we een cijfer intikken bij een input veld, dan ziet Python 2 dit direct als een cijfer terwijl Python3 dit als een string of stukje tekst ziet. Een zeer belangrijk verschil.
Vooral voor programmeurs die hun programma's willen aanpassen van Python 2 naar Python 3 kan dit ervoor zorgen dat hun programma soms heel rare dingen gaat doen.

 

 

Plaats reactie


Beveiligingscode
Vernieuwen

Thursday the 21st. . Bigcommerce review - All rights reserved.