Deze opdrachten zijn onderdeel van een programmeercursus gegeven in de opleiding Informatiekunde van de Rijksuniversiteit Groningen.
Python
Python is een programmeertaal die beschikbaar is via het Linuxplatform op de studentenmachines van de Faculteit Letteren in het Harmoniegebouw (kamers 1312.0107 en 1313.0119). Controleer eerst of de machine waarachter je zit Linux of MS Windows draait. Als dit laatste het geval is, herstart dan de machine en kies bij het eerste keuzemenu "Linux".
Nadat je bent ingelogd op Linux met je studentnummer en wachtwoord, moet je een terminalwindow starten. Dit kan door met de rechtermuisknop op de achterkant van het scherm te klikken. Er verschijnt een menu waaruit je "Run command" moet kiezen. Daarna verschijnt een klein window waarin je "xterm -ls" moet intikken, zonder de dubbele quotes. Als je dan op Return drukt dan start een terminalwindow.
In het terminalwindow kan je Python starten door python3 in te tikken:
$ python3 Python 3.1.2 (r312:79147, Sep 27 2010, 09:57:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello world!") Hello world! >>>
Er start dan een nieuwe commando-omgeving waarin je Pythoncommando's kunt intikken achter de prompt >>> . Hierboven staat een voorbeeld van een commando.
Let erop dat we in het practicum werken met Python versie 3. Gebruik daarom altijd het commando python3 . Er is ook een Pythoncommando zonder de drie maar deze verwijst naar Python versie 2. Die versie is helaas niet compatitble met Python 3.
Als je een Pythonprogramma hebt opgeslagen in een bestand mijnprogramma.py dan kan je dit programma als volgt draaien:
$ python3 mijnprogramma.py
De uitvoer van het programma wordt dan op het scherm getoond.
Oefening 1.1
Bekijk het volgende Pythonprogramma:
# laat welkomregel zien print("Welkom bij dit temperatuurconversieprogramma!") # vraag de gebruiker of een taak moet worden uitgevoerd answer = input("Wilt u graden Celsius omzetten in Fahrenheit (j/n)? ") if (answer == "j"): # vraag om aantal graden celcius celsius = eval(input("Geef het aantal graden Celsius: ")) # reken om naar Fahrenheit fahrenheit = (celsius*9/5)+32 print("Het corresponderende aantal graden Fahrenheit is",fahrenheit) else: # vraag de gebruiker of een taak moet worden uitgevoerd answer = input("Wilt u graden Fahrenheit omzetten in Celsius (j/n)? ") if (answer == "j"): # vraag om aantal graden Fahrenheit fahrenheit = eval(input("Geef het aantal graden Fahrenheit: ")) # reken om naar Celsius celsius = (fahrenheit-32)*5/9 print("Het corresponderende aantal graden Celsius is",celsius) print("Bedankt voor het gebruik van dit programma!")
Lees het programma en probeer de instructies zo goed mogelijk te begrijpen. Zoek de instrucies die je niet begrijp of vraag om hulp.
Sla daarna het programma op in een tekstbestand, bijvoorbeeld ex11.py en draai het programma in een terminalwindow met het commando
python3 ex11.py
Test het programma met een paar getallen. Werkt het zoals je verwachtte?
Jouw taak in deze opdracht is om de werking van dit programma uit te leggen en te testen. De uitleg van het programma samen met de testinvoer en bijbehorende testuitvoer is wat je in moet leveren.
Opdracht 1.2
Schrijf een Pythonprogramma dat de oppervlakte van een vierkant uitrekent. Hier is een voorbeeld van het gebruikt van zo'n programma:
$ python3 ex12.py Welkom bij dit oppervlakteberekeningsprogramma Ik zal de oppervlakte van een vierkant voor je uitrekenen Voer de breedte van het vierkant in, in cm: 9 De oppervlakte van dit vierkant is: 81 vierkante cm Bedankt voor het gebruik van dit programma!
Stuur als resultaat van deze opdracht jouw programma in plus de resultaten van een aantal tests.
Opdracht 1.3
Voor Python zijn een heleboel handige modules met functies beschikbaar. Zulke modules kan je laden in jouw programma met behulp van de instructie import . Een voorbeeld van zo'n module is random die de functie random.randint(a,b) bevat. Deze functie levert als resultaat een wllekeurig getal tussen a en b op. Een voorbeeld:
$ python3 Python 3.1.2 (r312:79147, Sep 27 2010, 09:57:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import random >>> x = random.randint(1,6) >>> print(x) 3
Gebruik de functie random.randint(a,b) om een Pythonprogramma te schrijven dat een willekeurig getal kiest tussen 1 en 3, dat vervolgens de gebruiker vraagt om te raden welk getal het programma heeft gekozen en dan tenslotte controleert of hetzelfde getal is ingetikt. Hier is een voorbeeld van de werking van het programma:
$ python3 ex13.py Ik heb een getal gekozen uit 1, 2 en 3. Kan je raden welk getal het is? 1 Helaas, jouw keuze (1) is fout. Ik had 2 gekozen. $ python3 ex13.py Ik heb een getal gekozen uit 1, 2 en 3. Kan je raden welk getal het is? 3 Klopt, ik had inderdaad 3 gekozen. Goed gedaan!
Tips: je kan verschillende strings printen met 1 commando door ze allemaal tussen de haakjes van de printinstructie te plaatsen met komma's ertussen. De spatie die wordt geprint tussen de strings kan worden verwijderd door tussen de haakjes sep="" toe te voegen.
Stuur als resultaat van deze opdracht jouw programma in plus de resultaten van een aantal tests.
Opdracht 1.4
Een priemgetal is een positief geheel getal dat alleen deelbaar is door zichzelf en door 1. Schrijf een Pythonprogramma dat van alle getallen vanaf 2 controleert of ze een priemgetal zijn. De priemgetallen die het programma vindt, moeten op het scherm worden geprint in groepjes van tien per regel. Hier is een voorbeeld van de uitvoer van het programma:
$ python3 ex14.py 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 ...
Voeg commentaar toe aan je programma waarin je de werking uitlegt.
Tips: bouw je programma stap-voor-stap op:
- begin met een programma dat een getal vraagt aan de gebruiker en dat dan nagaat of dit getal een priemgetal is of niet
- verwijder dan het gedeelte dat om een getal vraagt en plaats de overgebleven code in een loop waarin een teller loopt van 2 tot oneindig
- gebruik tenslotte spaties als eindtekens bij het printen in plaats van newlines en print alleen een newline na elk tiende priemgetal
Verschillende Pythoninstructies kunnen worden gebruikt bij het schrijven van dit programma: while, for, range en de modulo-operator (%).
Stuur als resultaat van deze opdracht jouw programma in samen met het resultaat van een test.
Lever jouw programma's, testresultaten en antwoorden op vragen in op Nestor samengevoegd in 1 tekstbestand met naam studentnummer-weeknummer.txt, bijvoorbeeld s1234567-1.txt, voor dinsdag 26 april 2011, 12:00.
Antwoorden
Last update: April 27, 2011. erikt(at)xs4all.nl