Topic 2 - Python Begin PDF

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 PDF
Total Downloads 65
Total Views 142

Summary

Download Topic 2 - Python Begin PDF


Description

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...


Similar Free PDFs