Deze les bevat een aantal weetjes over Python die niet aan bod zijn gekomen in de voorgaande lessen.
print
-opties
De enige manier om uitvoer af te drukken die we tot nu toe gezien hebben is het gebruik van de functie print()
, waarmee meerdere waarden kunnen worden afgedrukt, gescheiden door een spatie, en afgesloten met een regeleinde (waardoor verdere uitvoer op een nieuwe regel begint). In feite aanvaardt print
een paar sleutelwoordargumenten (Eng.: keyword arguments) die het mogelijk maken dit gedrag aan te passen aan je behoeften.
-
- Om een string
S
te gebruiken als scheiding tussen de waarden in plaats van een spatie: voeg het argumentsep = «S»
toe - Om een string
S
te gebruiken als afsluiting in plaats van een regeleinde: voeg het argumentend = «S»
toe
- Om een string
Deze taalvoorziening, sleutelwoordargumenten, is het gemakkelijkst te demonstreren met een paar voorbeelden.
De sleutelwoordargumenten moeten aan het einde van de lijst met argumenten worden toegevoegd; anders zal een fout optreden. Wanneer je ze beide gebruikt kunnen ze in willekeurige volgorde worden opgegeven.
Namen die zijn toegestaan voor variabelen en functies
- Namen kunnen bestaan uit letters, getallen en het underscore (
_
)-teken - Het eerste teken van een naam moet een letter zijn.
- Python maakt onderscheid tussen hoofdletters en kleine letters.
Zo is my_3rd_int
een naam die is toegestaan, maar 3rd_int
is dat niet.
Aflopende for
-lussen & andere
Herinner je je nog hoe we lieten zien hoe for
-lussen getallen kunnen doorlopen in opklimmende volgorde?
Vaak is het nodig om een for
-lus te schrijven die getallen doorloopt in dalende volgorde (van het grootste naar het kleinste). Om dat te kunnen doen gebruiken we range
met een derde argument met de naam stap:
Wanneer je even nadenkt, zul je kunnen vaststellen dat range(0, 5)
hetzelfde is als range(0, 5, 1)
: de verstek- ophoging is 1. Denk eraan dat range(start, stop, step)
al stopt, een stap vóórdat stop
bereikt wordt. Voor nog meer informatie, zie de Python-handleiding.
Op dezelfde manier kun je string[x:y:-1]
gebruiken om een deel van een string om te draaien.
Zo geeft string[x:y:2]
een substring van string met de tekens op positie x, x+2, x+4, ...
Bij een for
-lus is er een andere manier om een aflopende volgorde te realiseren: reversed(range(x, y))
. De lus gaat dan van y-1
tot x
in afnemende volgorde.
Minder code schrijven
Python kent verschillende manieren om de hoeveelheid code te verminderen; we laten er hier een paar zien:
Op deze website zullen we er niet altijd gebruik van maken, omdat daardoor het programma soms moeilijker leesbaar wordt. |
Toekenningsopdrachten
In Python kan je schrijven "x += 1
"; dat betekent "voeg 1 toe aan x
". Het is een verkorte schrijfwijze voor "x = x + 1
" zoals we hieronder zullen laten zien:
Op dezelfde manier bestaan er operatoren voor geheeltallige deling (//=
), modulo (%=
), en machtsverheffen (**=
).
Een lichaam op dezelfde regel (Eng.: inline blocks)
We hebben een aantal opdrachten gezien die worden gevolgd door een ingesprongen "lichaam" met code: for
, if
, else
, elif
, while
, en def
, bijvoorbeeld:
if x==y: «lichaam» #ingesprongen, meerdere regelsIn het speciale geval dat een
«lichaam»
maar één regel bevat kun je dat in Python ook als volgt schrijven:
if x==y: «lichaam» # enkele regelHier volgt een voorbeeld:
Dit is echter wel beperkt: een samengesteld lichaam met een dubbele punt erin (if
, for
, etc.) kan niet worden gebruikt als een inline block. Bijvoorbeeld if 2>1: if 4>3: print()
geeft een syntax error.
Gelijktijdige toekenningen
Python staat je toe meerdere toekenningen tegelijk te doen op één regel:
Merk op dat dit je in staat stelt om de verwissel-opgave met een programma van 1 regel op te lossen!
Vergelijkingen Rijgen
Python staat je ook toe om meerdere vergelijkingen te combineren:
v1 c1 v2 c2 v3 ...
waar alle v
waarden zijn en alle c
vergelijkinsoperatoren, wordt hetzelfde behandeld als (v1 c1 v2) and (v2 c2 v3) and ...
Standaardwaarden voor [:]
en range()
Je kan de start- en/of eindwaarden ook weglaten wanneer je de substring-operator [:]
gebruikt. (Dit geldt ook voor lijsten, zoals we in de volgende les zullen zien.) De standaardwaarde van de eerste index is 0
(het begin van de string) en de standaardwaarde van de laatste index is de lengte van de string. Op dezelfde manier is range(n)
een afkorting voor range(0, n)
.
None
Sommige functies geven een waarde terug als hun belangrijkste effect, zoals abs(x)
, maar andere functies die belangrijker zijn vanwege hun neveneffecten, zoals print()
, geven de verstekwaarde (Eng.: default value) None
terug:
We gebruiken None
als een speciale waarde in Python wanneer er geen andere waarde geschikt is. Als je type(None) uitvoert zie je dat None
zelfs z'n eigen type heeft: NoneType
. Laten we ook gelijk even bekijken wat het type van een type is:
In de volgende opgave moet je de tussenresultaten achterhalen van een lange opdracht opgebouwd uit type
en print
.
print(type(print(type(type(print(print()))))))
bestaat uit 4 regels. Zet ze in de goede volgorde.- <class 'type'>
- None
- «blank line»
- <class 'NoneType'>
Laten we het hier maar even bij houden. Je kunt nu door naar de volgende les!