Slides

3/10/14
Python
Vraag 1: Expressies en types
•  Integrated Development Environment (IDE):
Ø  Wing 101 (gratis te downloaden op www.wingware.com)
•  Oefeningen in de shell
•  >> noemen we de ‘prompt’
•  Python commando’s = expressies
•  Expressie bestaat uit waardes (e.g. 2) en operatoren (e.g. +,
-, /, *, %, **, …)
•  Elke waarde heeft een type
– 
type int : integer vb. -5, 0, 2, …
–  type float : floating point vb. 5.0
–  type string: reeks van karakters vb.‘abc’
•  Elk type heeft zijn operatoren
http://parallel.vub.ac.be/
| pag. 1
http://parallel.vub.ac.be/
| pag. 2
Vraag 1 b: Types
-Ingebouwde functies-
Vraag 1 a
1 + 2 * 3 7 (1 + 2) * 3 9 2 ** 4 16 13 % 5 3 7 / 2 3 -7 / 2 -­‐4 7.0 / 2 3.5 7 / 2.0 3.5 9 % -2 -­‐1 ‘pom’ * 4 ‘pompompompom’ ‘blablabla’ / 3 RUNTIME ERROR 2+ SYNTAX ERROR http://parallel.vub.ac.be/
| pag. 3
EVAL 1
EVAL 2*3
EVAL 1 + 6
>> 7
•  abs: Geeft de absolute waarde van een getal
Voorrang regels!!!
•  float: Zet een getal om naar een floating point getal
Deling operator:
LET OP! Deling van 2 ‘integer’ getallen à
afronding naar beneden!
Waar zit de fout? à hier gewoon in de
shell
Welke soort fout? à Type fout: deling
operator wordt niet ondersteund!
Type String ‘pom’
à Vermenigvuldiging à JA
Type String ‘blablabla’
à Deling? à NEE
RUNTIME ERROR
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
TypeError: unsupported operand type(s) for /: 'str' and 'int'
SYNTAX ERROR ~ GRAMMATICA FOUT
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
invalid syntax: <string>, line 1, pos 3
Welke soort fout? à Syntax fout:
op lijn 1 (in shell), positie 3
Grammatica fout!: Verwacht na
de + nog een andere waarde!
•  int: Zet een getal om naar een integer
à indien getal een floating point getal
à afkapping, geen afronding
•  round: Zet een getal om naar het dichst bijzijnde integer
à blijft wel van hetzelfde type
http://parallel.vub.ac.be/
| pag. 4
1
3/10/14
Vraag 1 c
Vraag 1 c
EVAL 4/3
EVAL 3.14159
EVAL 5**3
EVAL 1*3.14159*125
>> 392.6
http://parallel.vub.ac.be/
| pag. 5
http://parallel.vub.ac.be/
| pag. 6
Vraag 2: Types
-Type Boolean •  Boolean: 2 waardes
à False
à True
•  Let op hoofdletter
•  Geen aanhalingstekens
•  Operatoren: and, or, not
AND
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
OR
TRUE
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
NOT
TRUE
FALSE
FALSE
TRUE
Vraag 2: Types
-Type Boolean •  Boolean: False / True
•  Operatoren: and, or, not
>> not False
True
>> True and False
False
Lazy evaluation -> 1e argument True bij OR
>> True or False
=> altijd True
True
-> 1e argument False bij AND
>> False or not False
=> altijd False
True
overige argumenten moeten niet
gecontroleerd worden
http://parallel.vub.ac.be/
| pag. 7
http://parallel.vub.ac.be/
| pag. 8
2
3/10/14
Vraag 2: Types
-Type Boolean -
Vraag 2: Types
-Type Boolean -
•  Boolean: False / True
•  Boolean: False / True
•  Operatoren: and, or, not
à Voorrangregels: hoogste: not à and à or
•  Operatoren: and, or, not
à Voorrangregels: hoogste: not à and à or
>> not True or False and not not False or True
>> ((not True) or False) and (not ((not False) or True))
False
False
True
True
False
False
True
False
False
False
False
True
http://parallel.vub.ac.be/
| pag. 9
http://parallel.vub.ac.be/
| pag. 10
Vraag 3: Variabelen
•  Variabele: naam die een waarde kan bijhouden
letters, cijfers, _ : niet enkel cijfers, geen interpunctie
symbolen.
E.g. diff1, diff_set, … maar niet 11, diff-set, …
Ø De waarde van de variabele is variabel!
Ø 
•  Assignment: Een waarde toekennen aan een
variabele door = teken.
Vraag 3: Variabelen
•  Variabele: naam die een waarde kan bijhouden
•  Assignment: Een waarde toekennen aan een variabele.
a) Maak twee nieuwe variabelen aan met naam ‘pi’ en ‘r’, dewelke je de
respectievelijke waarden 3.14159 en 5 toekent. Bereken nu opnieuw het
antwoord op vraag b1) van de vorige vraag, waarbij je de nieuwe
variabelen gebruikt voor je berekening.
Naam van de variabele
>> pi = 5
http://parallel.vub.ac.be/
| pag. 11
Toekenning van de waarde 5 aan de variabele met naam pi
http://parallel.vub.ac.be/
| pag. 12
3
3/10/14
Vraag 4: Strings
•  String = sequentie van karakters (letters, cijfers, symbolen)
•  Operatoren:
Ø  Concatenatie: +
Ø  Herhaling: *
Vraag 5: Lijsten & Tupels
•  Lijst = collectie van data
Ø  E.g. [1,2,3,4]
Ø  Toegang tot de lijst elementen? à indexeren!
Indexatie gebeurt van 0 tot N-1
•  Tupel = collectie van niet aanpasbare data
à e.g. (1,2,3)
http://parallel.vub.ac.be/
| pag. 13
http://parallel.vub.ac.be/
| pag. 14
Vraag 6: Functies
•  Functie: Abstractie techniek
Ø  Ingewikkelde of veel voorkomende statements worden
gegroepeerd in een functie.
•  Syntax van een Functie Definitie:
Zelfgekozen functie naam
Vraag 6: Functies
•  Functie: Abstractie techniek
Ø  Ingewikkelde of veel voorkomende statements worden
gegroepeerd in een functie.
•  Syntax van een Functie Definitie:
à Geef een betekenisvolle naam!
def functie_naam(parameter lijst):
<body>
return mijn_resultaat
Keywoord waardoor Python weet dat een nieuwe
functie begonnen wordt
http://parallel.vub.ac.be/
| pag. 15
def functie_naam(parameter lijst):
<body>
return mijn_resultaat
0 of meerdere parameters
Parameter = een variabele die een
waarde krijgt wanneer de functie
wordt opgeroepen
Indentatie is belangrijk
à Gebeurt automatisch
in Wing 101
Willekeurig aantal statements
Keywoord return geeft aan dat een waarde
(mijn_resultaat) wordt teruggegeven!
http://parallel.vub.ac.be/
| pag. 16
4
3/10/14
Vraag 6: Functies
•  Benaming
# dit stukje is commentaar
def celsius2fahrenheit(temperatuur):
f = temperatuur * 9.0/5 + 32
return f
Functie definitie
Vraag 6: Functies
•  Benaming
# dit stukje is commentaar
def celsius2fahrenheit(temperatuur):
f = temperatuur * 9.0/5 + 32
Functie naam
return f
Return statement:
Commentaar begint met #
Waarde teruggeven!
>> celsius2fahrenheit(10)
50
>> celsius2fahrenheit(10)
50
Functie Aanroep
http://parallel.vub.ac.be/
| pag. 17
http://parallel.vub.ac.be/
| pag. 18
Vraag 6: Functies
•  Benaming
# dit stukje is commentaar
def celsius2fahrenheit(temperatuur):
f = temperatuur * 9.0/5 + 32
return f
>> celsius2fahrenheit(10)
50
Parameters!
Vraag 6: Functies
•  Benaming
# dit stukje is commentaar
def celsius2fahrenheit(temperatuur):
f = temperatuur * 9.0/5 + 32
return f
>> celsius2fahrenheit(10)
50
Actuele parameter
à  Parameters die worden
meegegeven aan een
functie oproep
à  Kunnen variabelen of
waardes zijn
http://parallel.vub.ac.be/
| pag. 19
Formele parameter
à  Parameters die worden
gedefinieerd in de
definitie van een functie
à  Hebben een naam en
worden een waarde
toegekend bij de aanroep
van de functie
http://parallel.vub.ac.be/
| pag. 20
5
3/10/14
Vraag 6: Functies
•  Bereik van variabelen en parameters
def celsius2fahrenheit(temperatuur):
f = temperatuur * 9.0/5 + 32
return f
>> celsius2fahrenheit(10)
50
Lokale variabelen
à  f en temperatuur zijn
lokale parameters
Bereik van f en temperatuur
à beide variabelen zijn
enkel en alleen in deze
groene box gekend!!!
àZe zijn lokaal aan de
functie celsius2fahrenheit
http://parallel.vub.ac.be/
| pag. 21
Vraag 6: Functies
•  Bereik van variabelen en parameters
def celsius2fahrenheit(temperatuur):
f = temperatuur * 9.0/5 + 32
return f
Shell
>> temperatuur
NameError: name 'temperatuur' is not defined
>> celsius2fahrenheit(10)
50
>> temperatuur
NameError: name 'temperatuur' is not defined
>> f
NameError: name 'f' is not defined
http://parallel.vub.ac.be/
| pag. 22
Vraag 6: Functies
def isSchrikkeljaar(jaar):
schrikkel = ((jaar % 4)==0) and (((jaar % 100)!=0) or ((jaar % 400)==0))
return schrikkel
def schrikkeljaren(jaar1, jaar2):
return isSchrikkeljaar(jaar1) or isSchrikkeljaar(jaar2)
http://parallel.vub.ac.be/
| pag. 23
Lokale variabelen
à  f en temperatuur zijn
lokale variabelen
Vraag 7: Methodes
•  Lijsten en Strings zijn objecten die een aantal methoden
hebben.
v Lijst Methodes:
ü  mylist.append(value)
ü  mylist.insert(index,value)
ü  mylist.remove(value)
ü  mylist.reverse()
ü  mylist.sort()
ü  mylist.pop()
v String Methodes
http://parallel.vub.ac.be/
| pag. 24
6
3/10/14
Vraag 7: Methodes
•  Lijsten en Strings zijn objecten die een aantal methoden
hebben.
v Lijst Methodes
v String Methodes
ü  mystring.capitalize()
ü  mystring.find(s), mystring.find(s,start), mystring.find(s,start,end)
ü  mystring.islower(), mystring.isupper()
ü  mystring.replace(old_s, new_s)
ü  mystring.split(), mystring.split(separator)
ü  mystring.strip(), mystring.strip(s)
ü  mystring.upper()
http://parallel.vub.ac.be/
| pag. 25
7