03: Commentaar en aanhalingstekens

Een computer programma ziet eruit als een kunstmatige taal, hetgeen nodig is om voor een computer eenduidig weer te kunnen geven wat je opdrachten betekenen. Maar vanwege het feit dat het kunstmatige taal is, blijft het soms lastig om door mensen gelezen te worden. Om dit te compenseren, mag je extra aantekeningen in je programma opnemen die door de computer worden genegeerd. Deze aantekeningen worden ook wel  commentaar genoemd.

In Python is, in elke regel van een programma waar een  # symbool (hekje of hash teken) in voorkomt, het # het begin van commentaar. De rest van de regel wordt genegeerd wanneer het programma wordt uitgevoerd. Hier volgt een voorbeeld.

Voorbeeld
Het effect van commentaar.

Omdat de tweede regel start met het # teken, zal Python die regel in zijn geheel negeren, en zoals je kunt zien werd nummer 2 niet geprint. Normaal gebruik van commentaar bevat onder meer:

  • uitleg over delen van het programma, voor jezelf en anderen om later nog eens door te nemen ;
  • "to do" aantekeningen, wanneer je een uitgebreid programma schrijft;
  • een regel van het programma tijdelijk buiten werking zetten ("uit-commenten") zonder de regel te wissen. Je kunt het later dan weer gemakkelijk invoegen in het programma.

Hier volgt een oefening om bovenstaande te illustreren. Wanneer je teveel veranderd hebt en terug wilt keren naar de beginsituatie, klik dan op Reset code to default.

Programmeeroefening: Seconden raden
Verbeter (debug) dit programma zodanig dat het aantal seconden in een week afdrukt.

Strings

Strings zijn rijen van karakters en getallen, of in andere woorden brokjes tekst. Ze worden geopend en gesloten door twee aanhalingstekens: bijvoorbeeld in Les 0  was  "Hello, World!" van ons allereerste programma een string. Wanneer het # verschijnt in een string, dan wordt het niet behandeld als commentaar:

Voorbeeld
Een string die het # teken bevat.

Dit komt omdat het deel binnen de aanhalingstekens "" een string literal is, dat zoveel wil zeggen dat het letterlijk moet worden gekopieerd en niet moet worden gezien als een opdracht. Precies zo zal print("3 + 4") niet het getal 7 afdrukken, maar alleen maar de string 3 + 4.

Escape-sequenties

Wat als je de aanhalingstekens " in een string  wilt opnemen? Wanneer je print("Ik zei "wow!" tegen hem") wilt uitvoeren dan zal dat een foutmelding tot gevolg hebben: het probleem is dat Python de string "Ik zei " ziet, gevolgd door wow! wat niet tot die string behoort. Dat is niet wat we willen!

Python heeft  twee eenvoudige manieren om aanhalingstekens in een string op te nemen.

  • Het is toegestaan om een string te laten beginnen en eindigen met een enkelvoudig aanhalingsteken (ook wel apostrof genoemd), zoals in 'bla bla'. Dan is het toegestaan, om in de string aanhalingstekens op te nemen, zoals in 'Ik zei "wow!" tegen hem.'
  • Je kunt een backslash gebruiken gevolgd door een aanhalingsteken (\" of \'). Dit wordt een escape sequentie genoemd. Python zal de backslash weghalen, en alleen het aanhalingsteken afdrukken. Hier volgt een voorbeeld.
    Voorbeeld
    De backslashes beschermen de aanhalingstekens, maar worden niet afgedrukt.

Verder geldt dat de backslash (\) een speciaal karakter is. Dat wil zeggen dat wanneer je een backslash wilt opnemen in een string, het noodzakelijk is  "om het van een escape karakter te voorzien" door middel van een tweede backslash, of in andere woorden je typt \\ in de string.

Meerkeuze Opgave: Escape karakters
Wat is de uitvoer van de opdracht of print("Backslashes \\ and single quotes \' and double quotes \" and pound signs # are awesome!")
Correct!

Programmeeroefening: The Great Escape
Schrijf een programma dat afdrukt:

A double-quote's escaped using a backslash, e.g. \"
Opmerking: er is (zoals gewoonlijk)  meer dan één manier om dit te doen! Bijvoorbeeld kun je de string insluiten in enkelvoudige aanhalingstekens, of in dubbele aanhalingstekens. In beide gevallen, is gebruik van een escape sequentie noodzakelijk. Los, als extra oefening, het probleem op de ene manier en daarna op de andere. Kun je het ook nog  op een derde manier oplossen?

Er zijn meer escape sequenties, zoals "newline", die we niet nu zullen behandelen. Voor nu, op naar de volgende les!