Home | Slides | Volgende

 

PTT Python 2011: Opdracht 1


Deze opdrachten zijn onderdeel van een programmeercursus gegeven in de opleiding Informatiekunde van de Rijksuniversiteit Groningen.

Achtergrondmateriaal bij deze opdrachten kan worden gevonden in de collegeslides (PDF). In het boek van Zelle correspondeert dit met de hoofdstukken 3, 7 en 8. In de Python Tutorial komt dit overeen met hoofdstukken 3 en 4 (4.1-4.4).

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:

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