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
© Copyright 2024 ExpyDoc