2.2. Invoer/uitvoer#

Een script wordt meestal pas interessant als we de resultaten van berekeningen kunnen zien, of als het script ons om invoer vraagt. In deze module zullen we alleen tekst (en getallen) als in- en uitvoer gebruiken. Later zullen we ook afbeeldingen (grafieken/plots) als uitvoer behandelen, en bijvoorbeeld een spreadsheet met data als invoer.

2.2.1. Uitvoer: print()#

Als we willen dat de resultaten van commando’s uit het script zichtbaar/leesbaar zijn in de console (shell), moeten we gebruik maken van de print()-functie die ingebouwd zit in Python. Probeer het onderstaande script maar eens uit te voeren, de losse regel met alleen a doet nu niks. Dit terwijl we als we a in de Shell intypen, we wel de inhoud van de variabele voorgeschoteld krijgen.

a = 12
b = 34

a
print(b)
34

Als we meerdere variabelen na elkaar willen printen, kunnen we deze met komma’s scheiden. Ook kunnen we direct een string in het print-commando zetten.

naam = "Piet"
leeftijd = 30

print(naam, "is", leeftijd, "jaar oud.")
Piet is 30 jaar oud.

Voor de Pietjes-Precies van alle leeftijden: merk op dat het print()-commando automatisch een spatie plaatst tussen de elementen die we er met komma’s gescheiden in stoppen.

Nog een klein detail: om een nieuwe regel te beginnen, kun je in de string die je print een speciaal stukje zetten: \n (n van newline).

str1 = "Eerste regel\nTweede regel"
str2 = "\n\nVierde regel"
str3 = "Nog steeds vierde regel?"

print(str1, str2, str3)
Eerste regel
Tweede regel 

Vierde regel Nog steeds vierde regel?

2.2.2. Invoer: input()#

We kunnen ook, terwijl ons script uitgevoerd wordt, invoer van de gebruiker vragen. Dit doen we het makkelijkst met de ingebouwde input()-functie. Probeer het volgende script maar eens zelf uit te voeren.


naam = input("Wat is je naam? (voer in en druk <ENTER>)\n")
leeftijd = input("Wat is je leeftijd? (voer in en druk <ENTER>)\n")

print(naam, "is", leeftijd, "jaar oud.")

Als het goed is vraagt dit script je om je naam en leeftijd in te voeren en laat het daarna de ingevoerde waarden zien in de console. Deze waarden kunnen we in ons script ook verder gebruiken om verdere bewerkingen mee uit te voeren. Kijk bijvoorbeeld maar naar het volgende stukje code:

print('We gaan a en b optellen.')
a = input('Wat is a?\n')
b = input('Wat is b?\n')

print('a + b:')
print(a + b)

Wanneer je deze uitvoert zal je echter zien dat het resultaat niet altijd is wat je verwacht. Daar gaat de opgave Invoer ook over.

De invoer die we met input() krijgen zal altijd als een tekst-variabele (str) binnenkomen. Als we dus bijvoorbeeld twee ingevoerde getallen bij elkaar willen optellen, moeten we de invoer nog converteren naar een getal, zoals een int of een float. Hiervoor gebruiken we de ingebouwde functies int() en float(). (Weet je nog wat het verschil is tussen deze twee typen variabelen?)

In het onderstaande stukje code is dit toegepast. Nu zal je wel de som van de twee getallen die je invoert terugkrijgen. Echter heeft dit ook als effect dat je niet meer zomaar alles in kan voeren wat je wilt. daar gaat opgave Invoer, conversie naar getallen over.


print('We gaan a en b optellen.')
a = float(input('Wat is a?\n'))
b = float(input('Wat is b?\n'))

print('a + b:')
print(a + b)

2.2.3. Voorbeeld: De ABC Formule#

Een handig klein programma dat de ABC-formule implementeert staat hieronder weergegeven. Dit programma wordt gebruikt in de opgave Test het Programma.


from math import sqrt

print('Dit programma implementeert de abc-formule.\n Voer eerst de waarden voor a, b, en c in.\n')

a = float(input('Wat is a? \n'))
b = float(input('Wat is b? \n'))
c = float(input('Wat is c? \n'))

D = (b ** 2) - (4 * a * c)
x_1 = (-b + sqrt(D)) / (2 * a)
x_2 = (-b - sqrt(D)) / (2 * a)

print('De uitkomsten zijn: x_1 = ', x_1, 'x_2 = ', x_2)

Misschien dat je bij het uitproberen een foutmelding kreeg, als je waarden a, b en c zorgen voor een negatieve discriminant (bijv. a=1, b=2, c=3). In de verdere pagina’s gaan we daar dieper op in.