Hieronder staan wat vragen/antwoorden.
Lente 2007
Algemeen
Python algemeen
Python IDE
PEACH
Algemeen
Wat te doen als u een practicum niet kunt bijwonen?
Indien u een practicum niet kunt bijwonen,
dan moet u zich tijdig met motivatie afmelden
bij de practicumcoödinator.
Wat te doen bij een gemiste deadline?
Indien u denkt een deadline niet te kunnen halen,
dan moet u tijdig een gemotiveerd verzoek tot uitstel indienen
bij de practicumcoödinator.
Vermeld in dit verzoek altijd:
- Uw naam en collegekaartnummer
- Om welke opgave het precies gaat
- De motivatie
- Datum/tijd wanneer u het werk wel af kunt hebben
Als de deadline al verstreken is,
dan heeft u een probleem.
U kunt dan proberen alsnog een verzoek tot uitstel in te dienen,
maar de motivatie dient dan wel uit te leggen waarom het verzoek
te laat is ingediend.
Bij onvoldoende motivatie wordt u doorverwezen naar de jaarcoördinator
van W.
Wat te doen als u een opgave wilt herkansen?
Als een inzending voor een opgave is afgewezen,
dan dient u dit zo spoedig mogelijk te herstellen.
Hiervoor vraagt u een herkansing aan
bij de practicumcoödinator.
Vermeld in dit verzoek altijd:
- Uw naam en collegekaartnummer
- Om welke opgave het precies gaat
- De motivatie (t.w. "herkansing i.v.m. afwijzing")
- Datum/tijd wanneer u het werk af kunt hebben
Een eerste herkansing zal i.h.a. zonder meer wel goedgekeurd worden.
Wat zijn de beoordelingscriteria?
De beoordelingscriteria worden per week uitgebreid (zie betreffende opgaven).
Hier is een totaaloverzicht van de criteria bij de laatste opgave:
- Ontwerpplan:
- Beschrijft opdeling in routines en hoe deze onderling samenhangen
(informatie uitwisselen).
- Noemt routines bij hun naam; tevens dient duidelijk te zijn
welke parameters en globale variabelen welke rol spelen (bij name noemen),
wat de aannames zijn (preconditie) en wat het resultaat danwel
effect (postconditie) is.
- Bij routines die ingewikkelder zijn ook toelichten wat de belangrijkste
stappen zijn in de implementatie.
- Dient duidelijk te maken hoe m.b.v. bovengenoemde routines het
probleem is opgelost en waarom dat goed is.
- Het ontwerpplan beschrijf niet de werking van het programma
("nu gebeurt dit, daarna dat"), maar de (statische) opbouw en de
motivatie voor die opbouw.
- Testplan:
- Zie checklist voor het opstellen van een testplan
- Er hoeft bij deze training alleen getest te worden met invoer
die aan de gegeven restricties voldoet.
- Er hoeft geen testrapport
(met resultaten van het uivoeren van het testplan)
gemaakt te worden,
maar je moet wel je code testen aan de hand van het eigen testplan.
Fouten die je zelf had kunnen vinden worden zwaarder aangerekend.
- Python code:
- Nette, systematische opmaak (inspringen, spaties, lege regels,
regellengte max. 80 kolommen; geen TAB karakters)
- Zinvolle naamgeving (niet: te korte, algemene, of nietszeggende namen)
- Helder commentaar:
- Aanhef met: volledige auteursnamen, id.nr., datum, samenvatting van doel
__author__ = "..."
- Grote lijn aangeven met
## tussen de onderdelen:
## Definities van constantes
...
## Definities van routines
...
def ...
...
## Begintoestand instellen
...
## Herhaaldelijk nieuwe toestand bepalen tot ...
while ... :
...
## Resultaat bepalen
...
## Begin van het programma opgebouwd uit de routines
...
## Einde
- Toelichting bij elke variabelen; met
#
achter eerste vóórkomen ervan
vensterLijst = [ ] # de ingelezen vensters,
initieel leeg
- Waar nuttig: toelichting bij ingewikkeldere code;
met #@ als het formeel kan
(bijv. #@ v = sqrt(vx^2 + vy^2))
anders met #
- Elke routine voorzien van een specificatie d.m.v. pre/post-contract:
def ... ( ... ) :
"""Korte beschrijving doel ...
Pre: aanname (noem parameters etc. bij naam)
Post: effect/resultaat (noem parameters etc. bij naam)
"""
- Overbodig commentaar is ongewenst:
i = i + 1 # i met 1 verhogen
- Zie ook slechte stijlfiguren
- Volgens ontwerpaanwijzingen, indien voorgeschreven
- Correctheid, d.w.z. in- en uitvoer voldoen aan de eisen
- Efficiëntie (waar gevraagd)
Python algemeen
Installeren van Python
- Op de W-laptops staat een verouderde versie van Python,
namelijk versie 1.5, of
mogelijk versie 2.1,
of zelfs nog helemaal geen Python.
- Dit kun je controleren in het Windows START menu
onder Programs: daar staat dan Python 1.5 of Python 2.1 bij.
- Je moet versie 2.5 installeren
Python-2.5.msi.
- Zie eventueel hier voor
nadere toelichting bij het installeren, m.n. als Microsoft Installer
niet op je laptop staat.
- N.B. Er zijn goede redenen om allemaal versie 2.5 te gebruiken:
- Versie 1.5 is echt verouderd.
- Sommige problemen uit 2.1 zijn in versie 2.5 opgelost.
- Versie 2.5 wordt gebruikt binnen
PEACH.
- Eventuele problemen met versie 2.5 zijn voor iedereen gelijk en
kunnen derhalve centraal aangepakt worden.
- De verschillen tussen 2.1.1 en 2.5 zijn beperkt,
maar als je de keus hebt, bevelen we ten sterkste 2.5 aan.
- Je kunt versie 2.1 de-installeren (verwijderen).
Zie hiervoor het Windows START menu onder Programs bij
Python 2.1: Uninstall Python.
Voor versie 1.5 gaat dat zo niet; laat die maar gewoon staan.
Aantal cijfers in exponent bij '%e'
Python 2.5 onder Windows toont bij weergave van floating-point
getallen met '%e' drie cijfers in de exponent,
bijv. '%e'%1024 geeft '1.024000+003'.
Bij sommige opgaven toont het voorbeeld echter een weergave
met twee cijfers in de exponent: 1.024000e+03
Python 2.5 onder Linux (wat binnen PEACH gebruikt wordt)
produceert bij '%e'%1024 echter de gevraagde '1.024000+03'.
U kunt dus gewoon met '%e' werken.
Hoe zit het nou met delen en machtsverheffen?
Machtsverheffen gaat in Python niet met ^
,
maar met **
.
Bijvoorbeeld 10 ** 8
.
Delen ligt wat subtieler.
Er zijn twee deeloperatoren: /
en //
.
- Als beide operanden van
/
gehele getallen zijn (integers),
dan is het resultaat hetzelfde als bij //
.
Als je toch een floating-point uitkomst wilt,
gebruik dan float(a)/b
,
of zorg ervoor dat a
of b
zelf vooraf al als
floating-point getal bekend zijn.
a//b
heeft altijd een gehele uitkomst,
nl. het aantal keer dat b
geheel in a
past.
N.B. b
mag uiteraard niet 0 zijn.
- Gebruik
a % b
voor de rest na deling
(met //
) van a
door b
.
Python IDE
Waarom werkt syntax highlighting niet bij mij?
Syntax highlighting werkt alleen op Python bestanden.
De IDE weet pas dat het een Python bestand is,
als het bewaard is met een naam van de vorm *.py
.
Na opslaan zie je syntax highlighting.
Bijzonder karakters in Python programma's
Het lijkt er op dat PythonWin en IDLE het niet zo hebben
op bijzondere karakters in een Python programma.
Vermijd karakters met accenten (zoals é en ë) en
`onzichtbare' stuurkarakters.
Ze kunnen zich voordoen als syntax fouten (invalid token).
Opsturen naar PEACH geeft vaak duidelijker aan waar het probleem
precies zit, dan je binnen de IDE kan zien.
Het is ook beter om TAB karakters te vermijden.
Ze lijken misschien handig bij inspringen,
maar de tab-afstand is niet overal hetzelfde en dat kan
indenteringsproblemen geven.
Gebruik liever een paar spaties.
N.B. De IDLE die bij Python 2.5 wordt meegeleverd
kan beter met bijzondere karakters omgaan.
Om deze karakters te gebruiken is het echter wel nodig
om het bestand in een geschikte codering op te slaan.
IDLE vraagt hiervoor toestemming.
Ook is het zo dat IDLE zo geconfigureerd kan worden dat de
TAB-toets een geschikt aantal spaties invoegt i.p.v. een TAB-symbool
(de standaardinstelling is spaties invoegen; laat dit zo staan).
Hoe kan ik een lange regel afbreken?
Een lange regel kan in een Python programma worden afgebroken met
een backslash:
print 'De zeer moeilijk te berekenen uitkomst is ', \
ingewikkelde_functie ( lang_eerste_argument, nog_langer_tweede_argument )
Werkmap voor zoeken van invoerbestanden
Als je in de IDE een bestand opent vanuit een Python programma,
dan kun je het beste een volledig pad opgeven (zoals D:\TPW\inp.txt.
We weten niet hoe/of een werkmap kan worden ingesteld.
Python programma's die binnen PEACH draaien kunnen er van uitgaan
dat de opgegeven naam (hetzij in de opgave of als invoer)
zo gevonden wordt.
Binnen PEACH is de map waarin het programma zich bevindt
automatisch de werkmap.
PEACH
Hoe registreren bij PEACH?
- Als je nog geen PEACH account hebt, moet je jezelf eerst
bij PEACH registreren
met het identiteitsnummer op je collegekaart.
- Zie hiervoor ook de uitleg op de home page van PEACH
en raadpleeg eventueel de Handleiding (via linkerbalk).
Hoe koppelen in PEACH?
- Koppelen aan de juiste groep in PEACH kan pas
tijdens het 1e practicum.
- Je krijgt dan te horen in welke groep je bent ingedeeld
(dit i.v.m. nakijken en vragen stellen per e-mail;
jullie kunnen wel zelf bepalen met wie je een koppel vormt;
dit wordt tijdens het 1e practicum genoteerd.)
- Vóór koppelen moet je eerst jezelf
registreren bij PEACH.
- Op het 1e pracitucm, kun je, na inloggen bij PEACH,
jezelf koppelen aan het vak
Training Programmeren voor W 2006-2007.
Kies de opgegeven groep (A, B of C).
Zorg er voor dat koppelgenoten in dezelfde groep zitten.
Uitleg:
Aanmelden en het koppelen aan een groep binnen PEACH
gaat via een popup-venster.
Als je een zogenaamde popup-killer hebt,
dan zul je die popup-vensters i.h.a. niet zien.
Oplossing: Schakel de popup-killer tijdelijk uit, of omzeil de bescherming
ervan op een andere manier.
Hoe kan ik het resultaat van mijn koppelgenoot zien?
Dat kan in de huidige versie van PEACH helaas niet.
Je kan alleen resultaten zien van werk dat je zelf hebt ingezonden.
Vraag het dus aan je koppelgenoot.
(Het is toch verstandig daar regelmatig contact mee te hebben. :-)
PEACH meldt
run_pyc_file: nested_scopes: 0
Deze melding kan genegeerd worden.
De precieze oorzaak is onbekend,
maar het heeft te maken met de manier waarop
Python programma's in PEACH worden uitgevoerd
(is specifiek voor Python 2.1).
Zend opmerkingen over deze pagina aan
Tom Verhoeff