Gebruiker:RoestVrijStaal/Zandbak: verschil tussen versies

Uit Wikibooks
Verwijderde inhoud Toegevoegde inhoud
RoestVrijStaal (overleg | bijdragen)
Geen bewerkingssamenvatting
RoestVrijStaal (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 3: Regel 3:
[[Afbeelding: Sandbox.png]]
[[Afbeelding: Sandbox.png]]


{{prognav|Python|Gebruik van variabelen en strings|Basis syntax}}
==Python programma's maken==


De Python-interprenter heeft veel wiskundige mogelijkheden. Je zou het als een rekenmachine kunnen gebruiken.
Python programma's zijn eigenlijk gewone tekstbestanden die met een standaard tekstverwerker kunnen geschreven worden.<sup>*</sup>


Hier is een lijst van wiskundige commando's van Python.
*In [[w:Microsoft Windows|Windows]], kan je met [[w:Notepad|Kladblok]] starten, maar al snel blijkt dat een krachtigere editor, zoals [http://notepad-plus.sourceforge.net/nl/site.htm Notepad++], [http://www.vim.org vim], [http://www.gnu.org/software/emacs/ emacs], of het met Python meegeleverde IDLE, het programmeren een stuk vereenvoudigt.
{| class="prettytable"
|-
! kop 1
! kop 2
! kop 3
|-
| rij 1, cel 1
| rij 1, cel 2
| rij 1, cel 3
|-
| rij 2, cel 1
| rij 2, cel 2
| rij 2, cel 3
|}


*Bij PortablePython wordt standaard SciTE meegeleverd om te programmeren, maar [http://portableapps.com/apps/development/notepadpp_portable Notepad++ Portable] biedt net wat meer functies dan SciTE.


*Op de [[w:Mac OS X|Mac]] kun je TextEdit gebruiken, maar heeft, net als Kladblok, geen syntax highlighting. TextWrangler en Smultron zijn beide gratis tekstverwerkers voor de Mac die wel Python syntax highlighting hebben.


== Een praktisch voorbeeld ==
*In [[w:Linux|Linux]] en andere Unix-achtige systemen, kan je beginnen met Gedit, Kate of Muispad. Voor mensen die liever een tekstinterface gewend zijn, is nano of pico een uitkomst. Ook vim en emacs worden hoog aangeprezen.


In het volgende voorbeeld gaan we Python gebruiken als rekenmachine. En waarom proberen we meteen niet om eens iets nuttigs te maken? We gaan een programma schrijven om onze BMI uit te rekenen. (BMI = Body Mass Index. Voor een gezonde volwassene ligt de BMI tussen 18 en 25. Meer dan 25 betekent dat je aan overgewicht lijdt, minder dan 18 betekent dat je te weinig weegt.) BMI wordt berekend aan de hand van jouw lengte en gewicht.
*Natuurlijk kan er ook gebruikt worden gemaakt van de Integrated DeveLopment Environment (ID(L)E) van Python zelf. Er bestaan natuurlijk nog andere [http://www.python.org/moin/PythonEditors Python-vriendelijke editors] die bijvoorbeeld Python syntax highlighting ondersteunen.
In formulevorm:


<math>bmi = \frac{gewicht_{kg} }{lengte_{m} \times lengte_{m}}</math>


== Eenvoudige wiskunde ==
Laten we ons eerste programma schrijven. Maak een bestand met de naam <tt>hallo.py</tt> in een teksteditor naar keuze met als inhoud:
<source lang=python>
print "hello, world!"
</source>
=== Onder Windows ===


#!/usr/bin/python
*Start uw teksteditor.
*Tik het programma in.
print "Geef uw gewicht in kilogram?",
*Maak een tijdelijke map, zoals <tt>C:\pythonoefeningen</tt>, en sla er het programma in op onder de naam <tt>hallo.py</tt>.
gewicht_kg = int(raw_input())
*Open de MS-DOS prompt. (Ofwel: Start > Uitvoeren... > CMD > enter)
print "Geef uw lengte in meter?",
*Ga in het MS-DOS commandovenster in de net gemaakte map en voer het programma uit:
lengte_m = float(raw_input())
<source lang=dos>
bmi = gewicht_kg / (lengte_m * lengte_m)
C:\> '''cd \pythonoefeningen'''
print "Uw BMI bedraagt: " + str(bmi) + "."
C:\pythonoefeningen> '''python hallo.py'''
</source>
Controleer, indien dit niet lukt, of uw PATH omgevingsvariabele de Python installatiemap bevat. Lees desnoods opnieuw de instructies op [[Programmeren in Python/Installatie|Python Installatie]].


Nu kan je van iedereen de BMI berekenen, simpelweg door jouw zelfgeschreven programma uit te voeren!
=== Onder Linux ===


Dit programma bevat wel al een paar dingen die we nog niet uitgelegd hadden, en daarover gaan
*Maak een map voor de oefeningen, waar je lees- en schrijfrechten hebt. Bijvoorbeeld /home/jouwaccountnaam/pythonoefeningen, en ga er daarna in. Als je dit wilt doen via een command-line kun je zo tewerk gaan:
de volgende puntjes.
<source lang=text>
$ '''mkdir ~/pythonoefeningen'''
$ '''cd ~/pythonoefeningen'''
</source>
*Open uw teksteditor and tik het programma in. Sla het daarna op als <tt>hallo.py</tt>.
*Maak het uitvoerbaar en voer het uit:
<source lang=text>
$ '''chmod +x hallo.py'''
$ '''./hallo.py'''
</source>


*Als je met dit programma werkt, en je vergelijkt het met het vorige voorbeeldprogramma, dan heb je wellicht gemerkt dat we deze keer de antwoorden op de vragen op dezelfde lijn als de vraag konden intikken. In het vorige programma moesten we op de lijn onder de vraag antwoorden. Wat is hier aan de hand? Welnu, normaal gezien plakt het <tt>print</tt> statement automatisch een zogenaamde '''newline''' aan de tekenreeks die je wil afdrukken. Die '''newline''' is een onzichtbaar teken dat ervoor zorgt dat de cursor naar de volgende regel springt. In ons ''BMI'' programma, hebben we achteraan het print statement een komma geplakt. Die kleine komma zorgt ervoor dat de cursor niet naar de volgende regel springt.
=== Onder MacOS ===
*<tt>int()</tt> - deze handige functie zet een tekenreeks om naar een getal. Herinner je je nog dat Python sterk getypeerd is? Python laat niet toe dat we rekenen met tekenreeksen. We kunnen enkel rekenen met getallen. Zelfs als je enkel cijfers intikt, is dat voor Python nog steeds een tekenreeks. <tt>int()</tt> herkent echter een tekenreeks die enkel uit cijfers bestaat en maakt er een geheel getal van. Een geheel getal is een getal zonder cijfers na de komma.
Het werkt ongeveer hetzelfde als bij linux.
*<tt>float()</tt> - deze handige functie zet een tekenreeks om naar een kommagetal. Start Python in interactieve mode en probeer eens:
*Maak een map voor de oefeningen, waar je lees- en schrijfrechten hebt.
Bijvoorbeeld /home/jouwaccountnaam/pythonoefeningen, en ga er daarna in.
*Open uw teksteditor and tik het programma in. Sla het daarna op als <tt>hallo.py</tt> in de pythonoefeningen-map.
*Open de Programma's menu, ga naar Utilities en open het command-line programma.
*Ga via de command-line naar de gewenste map en voer het uit:
<source lang=text>
$ '''cd ~/pythonoefeningen'''
$ '''python hallo.py'''
</source>


float("3.14")
=== Resultaat ===


Verrast over het resultaat? Wat je hier ziet is een beperking van de computer. Sommige kommagetallen kunnen niet helemaal juist voorgesteld worden in een computer. Python probeert dat niet te verbergen.
Het programma zou <tt>hello, world!</tt> moeten afdrukken. Proficiat! Je bent reeds goed op weg om een Python programmeur te worden.
*Het stukje <tt>str(</tt>lengte_m<tt>)</tt> in het print statement. Python laat niet zonder meer toe van tekenreeksen aan getallen te plakken met het plus-teken. Probeer in het voorbeeldprogramma maar eens de <tt>str()</tt> weg te laten. Je zal een foutmelding krijgen. In dit geval moeten we het getal omzetten naar een tekenreeks. Dit is precies wat de <tt>str()</tt> functie ons biedt.


== Uitvoer in een mooi formaat ==
=== Interactieve modus ===


In het vorige programma schreven we nog:
Om te verhinderen dat Python stopt als het programma klaar is kan je de -i vlag specifiëren om een interactieve sessie te starten. Dit kan '''zeer''' nuttig zijn om fouten op te sporen, of om snel kleine dingen uit te proberen.
<source lang=python>
python -i hallo.py
</source>
=== Oefeningen ===


print "Uw BMI bedraagt: " + str(bmi) + "."
*Pas het <tt>hallo.py</tt> programma aan om hallo te zeggen tegen een historisch leider naar keuze (of tegen [[w:Ada Lovelace|Ada Lovelace]]).
*Verander het programma zodat het na de begroeting vraagt: "Hoe ben je hier terecht gekomen?".


Er zijn een paar mogelijkheden om dit leesbaarder te programmeren. Het eerste probleem is dat we plus-tekens mengen met str-operatoren wat het geheel wat verwarrend maakt. Bovendien wordt het resultaat, een kommagetal, niet zo mooi afgedrukt, zoals blijkt uit de volgende sessie met ons programma.
[[Programmeren in Python/Python programma's maken/Oplossingen|Oplossingen]]
Geef uw gewicht in kg? 70
Geef uw lengte in meter? 1.75
Uw BMI bedraagt: 22.491349480968861


Zoveel getallen na de komma zijn niet alleen belachelijk nauwkeurig, het ziet er ook niet uit. Gelukkig heeft Python een % operator die ons kan helpen. Met de % operator kunnen we een tekenreeks formatteren:
----

<sup>*</sup> Soms worden Python programma's in gecompileerde vorm gedistribueerd. We zullen ons hier voorlopig niet verder op toeleggen.
:<code>''MijnTekenreeks'' % (arg1, arg2, ...)</code>

Afhankelijk van wat we willen formatteren (tekenreeksen, of getallen, of datums, of ...) moeten we een andere formaatcode hanteren. Formaatcodes kan je vinden <TODO>.
Om ons programma te verbeteren hebben we de formaatcode nodig voor kommagetallen. Dit is de <code>%f</code> formaatcode:

print "Uw BMI bedraagt: %.1f." % (bmi)

De <code>%.1f</code> formaatcode zorgt ervoor dat een kommagetal wordt afgedrukt met exact 1 cijfer na de komma. De uitvoer ziet er nu veel beter uit:
Geef uw gewicht in kg? 70
Geef uw lengte in meter? 1.75
Uw BMI bedraagt: 22.5

{{beginnetje}}
{{prognav|Python|Gebruik van variabelen en strings|Basis syntax}}

Versie van 18 jun 2008 21:56

Zandbak van RoestVrijStaal

Sjabloon:Prognav

De Python-interprenter heeft veel wiskundige mogelijkheden. Je zou het als een rekenmachine kunnen gebruiken.

Hier is een lijst van wiskundige commando's van Python.

kop 1 kop 2 kop 3
rij 1, cel 1 rij 1, cel 2 rij 1, cel 3
rij 2, cel 1 rij 2, cel 2 rij 2, cel 3


Een praktisch voorbeeld

In het volgende voorbeeld gaan we Python gebruiken als rekenmachine. En waarom proberen we meteen niet om eens iets nuttigs te maken? We gaan een programma schrijven om onze BMI uit te rekenen. (BMI = Body Mass Index. Voor een gezonde volwassene ligt de BMI tussen 18 en 25. Meer dan 25 betekent dat je aan overgewicht lijdt, minder dan 18 betekent dat je te weinig weegt.) BMI wordt berekend aan de hand van jouw lengte en gewicht. In formulevorm:

Eenvoudige wiskunde

#!/usr/bin/python

print "Geef uw gewicht in kilogram?",
gewicht_kg = int(raw_input())
print "Geef uw lengte in meter?",
lengte_m = float(raw_input())
bmi = gewicht_kg / (lengte_m * lengte_m)
print "Uw BMI bedraagt: " + str(bmi) + "."

Nu kan je van iedereen de BMI berekenen, simpelweg door jouw zelfgeschreven programma uit te voeren!

Dit programma bevat wel al een paar dingen die we nog niet uitgelegd hadden, en daarover gaan de volgende puntjes.

  • Als je met dit programma werkt, en je vergelijkt het met het vorige voorbeeldprogramma, dan heb je wellicht gemerkt dat we deze keer de antwoorden op de vragen op dezelfde lijn als de vraag konden intikken. In het vorige programma moesten we op de lijn onder de vraag antwoorden. Wat is hier aan de hand? Welnu, normaal gezien plakt het print statement automatisch een zogenaamde newline aan de tekenreeks die je wil afdrukken. Die newline is een onzichtbaar teken dat ervoor zorgt dat de cursor naar de volgende regel springt. In ons BMI programma, hebben we achteraan het print statement een komma geplakt. Die kleine komma zorgt ervoor dat de cursor niet naar de volgende regel springt.
  • int() - deze handige functie zet een tekenreeks om naar een getal. Herinner je je nog dat Python sterk getypeerd is? Python laat niet toe dat we rekenen met tekenreeksen. We kunnen enkel rekenen met getallen. Zelfs als je enkel cijfers intikt, is dat voor Python nog steeds een tekenreeks. int() herkent echter een tekenreeks die enkel uit cijfers bestaat en maakt er een geheel getal van. Een geheel getal is een getal zonder cijfers na de komma.
  • float() - deze handige functie zet een tekenreeks om naar een kommagetal. Start Python in interactieve mode en probeer eens:
float("3.14")

Verrast over het resultaat? Wat je hier ziet is een beperking van de computer. Sommige kommagetallen kunnen niet helemaal juist voorgesteld worden in een computer. Python probeert dat niet te verbergen.

  • Het stukje str(lengte_m) in het print statement. Python laat niet zonder meer toe van tekenreeksen aan getallen te plakken met het plus-teken. Probeer in het voorbeeldprogramma maar eens de str() weg te laten. Je zal een foutmelding krijgen. In dit geval moeten we het getal omzetten naar een tekenreeks. Dit is precies wat de str() functie ons biedt.

Uitvoer in een mooi formaat

In het vorige programma schreven we nog:

print "Uw BMI bedraagt: " + str(bmi) + "."

Er zijn een paar mogelijkheden om dit leesbaarder te programmeren. Het eerste probleem is dat we plus-tekens mengen met str-operatoren wat het geheel wat verwarrend maakt. Bovendien wordt het resultaat, een kommagetal, niet zo mooi afgedrukt, zoals blijkt uit de volgende sessie met ons programma.

Geef uw gewicht in kg? 70
Geef uw lengte in meter? 1.75
Uw BMI bedraagt: 22.491349480968861

Zoveel getallen na de komma zijn niet alleen belachelijk nauwkeurig, het ziet er ook niet uit. Gelukkig heeft Python een % operator die ons kan helpen. Met de % operator kunnen we een tekenreeks formatteren:

MijnTekenreeks % (arg1, arg2, ...)

Afhankelijk van wat we willen formatteren (tekenreeksen, of getallen, of datums, of ...) moeten we een andere formaatcode hanteren. Formaatcodes kan je vinden <TODO>. Om ons programma te verbeteren hebben we de formaatcode nodig voor kommagetallen. Dit is de %f formaatcode:

print "Uw BMI bedraagt: %.1f." % (bmi)

De %.1f formaatcode zorgt ervoor dat een kommagetal wordt afgedrukt met exact 1 cijfer na de komma. De uitvoer ziet er nu veel beter uit:

Geef uw gewicht in kg? 70
Geef uw lengte in meter? 1.75
Uw BMI bedraagt: 22.5

Sjabloon:Beginnetje Sjabloon:Prognav

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.