Title | Topic 2 - Python Begin |
---|---|
Author | Ines Boulahya |
Course | Inleiding tot de computerwetenschappen |
Institution | Vrije Universiteit Brussel |
Pages | 39 |
File Size | 2.5 MB |
File Type | |
Total Downloads | 65 |
Total Views | 142 |
Download Topic 2 - Python Begin PDF
Inleiding tot de Computerwetenschappen Wolfgang De Meuter - Viviane Jonckers Software Languages Lab Vrije Universiteit Brussel
Topic 2 Eerste stappen in Python 1
“Chatten” met Python via IDLE
De Prompt
Waarde Expressie 2
Wat gebeurt er achter het scherm? Hmm... dat is dan 28
Leesbaar! Read
Eval
28 2*8+12
Print
The Read-Eval-Print-Loop (REPL)
3
Fouten: Syntaxfouten >>> 2 + SyntaxError: invalid syntax
Ik doe zelfs geen moeite! Eval
Onleesbaar! Read Klagen! Print 4
Fouten: Runtime Fouten >>> 3 + x Traceback (most recent call last): File “”, line 1, in 3 + x NameError: name ‘x’ is not defined
Ik moet 3 optellen bij x. Maar ik ken x niet! Eval
Leesbaar! Read
Klagen! Print 5
Expressies, Waarden en Types
>>> 4+13 17 >>> 17 / 10 1 >>> 17 % 10 7
17 en 10 zijn van het type “int” (t.t.z. ∈ ℤ)
≠ 1.7
% heet “modulo”
+, -, *, / en % zijn operatoren “van ints naar int”
6
Float, een Ander Type
>>> 1.7 >>> 1.7 >>> 1.7 >>> 1.7 >>> 1.7 >>>
17.0 / 10.0
17.0, 10.0, 10. en 17. zijn van het type “float” (t.t.z. ∈ ℝ)
17.0 / 10 17 / 10.0 17 / 10. 17. / 10
/ is zowel een operator “van floats naar float” alsook “van int en float naar float”
/ heet een overloaded operator" (werkt voor verscheidene types) 7
⊂
float
ℝ
floats worden door een computer met eindige precisie benaderd >>> 1.0/10.0 0.10000000000000001
Sommige reële getallen bestaan niet
>>> 1.0 / 3.0 0.33333333333333331 >>> 1.0 / 3.0 + 1.0 / 3.0 0.66666666666666663
De fout wordt erger en erger Het deel van de computerwetenschappen dat continue wiskunde benadert met computers heet numerieke analyse 8
Wat is een Type ? Een type is een naam voor een verzameling waarden (bvb. int, float) samen met een aantal operatoren die je kan toepassen op die waarden
84.2 ∈ float
84.2 ∉ int
>> 3 >> 3 >> 212 - ((32.0 * 5.0) / 9.0) 194.22222222222223 >>> (212 - 32.0) * 5.0 / 9.0 100.0
Haakjes gebruiken indien nodig
juist
Negatie { ** } > { - } > { *, /, % } > { +, - } Machtsverheffing
Multiplicatieve operatoren 10
Additieve operatoren
Complex, nóg een Ander Type 12j en 4+8j zijn van het type “complex” (t.t.z. ∈ ℂ)
Rolls Royce voor wetenschappers
Uiteraard complex ⊂ ℂ
Ingenieurs schrijven j i.p.v. i
j2 = -1 1j ≠ j
>>> 12j 12j >>> 4+8j (4+8j) >>> 1j*1j (-1+0j) >>> j Traceback (most recent call last): File “”, line 1, in j NameError: name ‘j’ is not defined 11
En nóg één: Strings Strings zijn “strengen” van letters, cijfers en andere tekens kies ‘ of “ maar consistent >>> ‘Aristotle’ ‘Aristotle’ >>> “Isaac Newton” ‘Isaac Newton’ >>> ‘Charles Darwin” SyntaxError: EOL while scanning string literal >>> ‘Albert’ + ‘ Einstein’ ‘Albert Einstein’
+ is een overloaded operator. Voor strings heet de operator concatenatie.
12
Strings komen later veel uitgebreider aan bod
Functies in Wiskunde sin(x)
|x|=
{
cos(x)
cotg(x)
x als x≥0 -x anders
bgtg(x) ggd(a,b)
13
Functies Ingebouwd in Python |x|=
{
x als x≥0 -x anders
abs is de naam van de functie
functies worden opgeroepen... >>> abs(-9) 9 >>> abs(9) 9
... met een argument
14
Functies met 2 (of meer) Argumenten machtsverheffing
>>> 2 ** 4 16 >>> pow(2,4) 16
synoniemen
pow wordt opgeroepen met 2 argumenten Als functies met meerdere argumenten worden opgeroepen, worden die door komma’s gescheiden 15
Enkele (niet-wiskundige) voorbeelden floats afronden >>> round(3.8) 4.0 >>> round(3.3) 3.0 >>> round(3.5) 4.0 >>> int(34.6) 34 >>> float(21) 21.0 >>> type(3.8)
>>> type(3)
>>> type(12+12j)
>>> type(abs)
>>> type(“Neon”)
floats afkappen
type omzetten
type vragen van een waarde
16
Variabelen & Assignment Een variabele is een naam die verbonden is met een waarde
= maakt een nieuwe variabele en verbindt ze met een waarde
>>> degrees_celsius = 26.0 >>> degrees_celsius 26.0 >>> 100 - degrees_celsius 74.0
= heet een toekenning of assignment statement
17
Statements versus Expressies Statement >>> degrees_celsius = 26.0 >>> degrees_celsius 26.0 >>> 100 - degrees_celsius 74.0
Expressies
Een expressie wordt uitgerekend en geeft een waarde terug" Een statement is een “commando”, wordt uitgevoerd en heeft geen waarde 18
Een assignment statement uitvoeren Evalueer de expressie en verbind haar waarde met de naam Eval Read Staat er links van = een variabele? Staat er rechts van = een expressie?
Print niks Print
19
Wat als de variabele al bestaat?
>>> difference >>> difference 84.5 >>> difference >>> double = 2 >>> double 40 >>> difference >>> double 40 >>>
Er wordt geen nieuwe variabele gemaakt."
= 100 - 15.5
= 20 * difference
De oude waarde wordt gewoon vergeten."
= 5
De variabele wordt verbonden met de nieuwe waarde. Niets wordt automatisch herberekend!
20
Variabelen links en rechts van =
variabele" herbinden
>>> >>> 3 >>> >>> 6 >>> >>> 36
number = 3 number number = 2 * number number number = number * number number
21
variabele gebruiken
Afgekorte Notatie >>> number = 100 >>> number -= 80 >>> number 20
Enkel kunnen lezen
x += w
x=x+w
x -= w
x=x-w
x *= w
x=x*w
x /= w
x=x/w
etc ...
.py files als “werkschrift”
Alles na hekje: GENEGEERD
Terloops: alles na # wordt genegeerd
constanten.py Zal je veel tikwerk besparen >>> ================================ RESTART ================================ >>> >>> valversnelling 9.8100000000000005 >>> electronmassa 9.1093829099999999e+31
23
Bij importeren: nieuwe naam gecreërd
Importeren van een .py-file constanten.py Gebonden aan een module (%)
>>> import constanten >>> valversnelling Traceback (most recent call last): File “”, line 1, in valversnelling NameError: name ‘valversnelling’ is not defined >>> constanten.valversnelling 9.8100000000000005
24
“Modules” gemaakt door Derden >>> pi Traceback (most recent call last): File “”, line 1, in pi NameError: name ‘pi’ is not defined >>> import math >>> math.pi 3.1415926535897931 >>> sqrt
standaard meegeleverd zonder : Error
Traceback (most recent call last): File “”, line 1, in sqrt NameError: name ‘sqrt’ is not defined >>> math.sqrt(4) 2.0
Niet alleen variabelen. Ook functies! 25
≠ versies voor zelfde functie/variabele
>>> import math >>> math.sqrt(-1)
module voor eenvoudige wiskunde
Traceback (most recent call last): File “”, line 1, in math.sqrt(-1) ValueError: math domain error >>> import cmath >>> cmath.sqrt(-1) 1j >>> cmath.exp(1+1j) (1.4686939399158851+2.2873552871788423j)
module voor complexe wiskunde 26
Een andere naam kiezen
Verandert de echte naam niet >>> import constanten as cts >>> cts.valversnelling 9.8100000000000005 >>> import math as reeel >>> import cmath as complex >>> complex.sqrt(-1) 1j >>> reeel.acos(-1) 3.1415926535897931
27
Tikwerk besparen Importeer de math module >>> import math >>> math.exp(1) 2.7182818284590451 >>> math.sqrt(4) 2.0 >>> math.log10(100) 2.0 >>> math.cos(math.pi) -1.0
Importeer (naam verkorten) alles uit de math module 28
>>> from math import * >>> exp(1) 2.7182818284590451 >>> sqrt(4) 2.0 >>> log10(100) 2.0 >>> cos(pi) -1.0
Samenvatting Importeer de module import module-naam import module-naam as eigen-naam
Importeer alles uit de module from module-naam import *
29
Tijd voor een nieuw type: tupels A × B = { (a,b) | a ∈ A, b ∈ B }"
bvb. ℝ2
A × B × C = { (a,b,c) | a ∈ A, b ∈ B, c ∈ C }" A × B × C × D = { (a,b,c,d) | a ∈ A, b ∈ B, c ∈ C, d ∈ D }" .....
str × int
helium neon argon krypton xenon radon
= = = = = =
(“He”, (“Ne”, (“Ar”, (“Kr”, (“Xe”, (“Rn”,
2) 10) 18) 36) 54) 86)
tupels met 2 componenten
bvb. ℝ3
genest tupel
noble_gasses = (helium, neon, argon, krypton, xenon, radon)
tupel met 6 componenten Doel: waarden aan elkaar lijmen indien ze samen horen.
30
Bewerkingen op tupels >>> radon (‘Rn’, 86) >>> argon (‘Ar’, 18) >>> noble_gasses ((‘He’, 2), (‘Ne’, 10), (‘Ar’, 18), (‘Kr’, 36), (‘Xe’, 54), (‘Rn’, 86)) >>> len(noble_gasses) 6 >>> noble_gasses[1] (‘Ne’, 10) >>> noble_gasses[2] (‘Ar’, 18) >>> noble_gasses[1] == neon True >>> noble_gasses[1][0] ‘Ne’ >>> noble_gasses[5][1] 86 >>> noble_gasses[6]
aantal componenten
tuple[expressie]
indexeren
geneste tupels indexeren
Traceback (most recent call last): File “”, line 1, in noble_gasses[6] IndexError: tuple index out of range >>> radon + neon (‘Rn’, 86, ‘Ne’, 10) 31
van 0 tot len-1
optellen (overloaded +)
indexeren: algemene vorm
Twee randgevallen >>> () () >>> ()[0]
het lege tupel
heeft geen componenten
Traceback (most recent call last): File “”, line 1, in ()[0] IndexError: tuple index out of range >>> (1) 1 >>> type(())
>>> type((1,2))
>>> type((1))
>>> type((1,))
>>>
gewone wiskunde haakjes
truukje met komma
32
Voorbeeld: De Tabel van Mendeljev mendeljev.py
(Zeer veel weggelaten)
past niet op 1 slide
33
Voorbeeld (vervolg)
tupel van 92 componenten >>> len(elements) 92 >>> koolstof = elements[5] >>> koolstof (‘C’, ‘Carbon’, 6, 12.0107, 14)
Python telt vanaf nul!
Iedere component is opnieuw een tupel
34
Geïntegreerd Voorbeeld: Matplotlib http://matplotlib.sourceforge.net/
Zéér omvangrijke groep Python modules voor het maken van professionele plots
Kenners
Wij, nu 35
Matplotlib
Een module in een module from matplotlib.pyplot import * from math import * plot((1,2,3,4,5,6,7,8,9,10))
“plot” met een tupel (t.t.z. 1 argument)
plot((1,4,9,16,25,36,49,64,81,100)) plot((sqrt(1),sqrt(2),sqrt(3),sqrt(4),sqrt(5),sqrt(6),sqrt(7),sqrt(8),sqrt(9),sqrt(10))) show()
plot & show zijn functies
sqrt is een functie
Merk op: sommige functie oproepen zijn statements; andere expressies
36
Optionele “format string”
blauwe bolletjes plot bestaat ook met 2 argumenten
37
Optionele “format string” (vervolg)
groene driehoekjes
De mogelijkheden van matplotlib gaan zeer ver
38
Topic 2
39...