Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Språket Python - Del 1Grundkurs i programmering med Python
Hösten 2009
Pedher JohanssonInstitutionen för datavetenskap
2
Dagens lektion
Ett programmeringsspråks byggstenar
Några inbyggda datatyper
Styra instruktionsflödet
Modulen sys
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
3
Ett programmeringsspråks byggstenar
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
4
ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Datatyper
I Data av olika typ kräver olika representation– heltal– decimaltal (flyttal)– tecken– text– listor– mängder– strängindexerade fält
I Inbyggda datatyperI Egendefinierade datatyper
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
5
ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Satser (kontrollstrukturer)
I Styr flöde av instruktioner– Villkorade satser– Upprepade satser
I Finns vanligtvis i flera anpassade varianter
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
6
ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Funktioner och moduler
I Funktioner– Samlar instruktioner som kan anropas från olika
delar av ett program– Identiska block av kod behöver inte skrivas flera
gånger
I Moduler– Samlar funktioner som är relaterade– Ger bättre organisation av stora program– Kan återanvändas i flera program
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
7
Några inbyggda datatyper
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
8
NÅGRA INBYGGDA DATATYPER
Fyra sätt att representera tal
I heltal (int)– Skrivs som t.ex. 7
I stora heltal (long)– Skrivs som t.ex. 467L
I decimaltal/flyttal (float)– Skrivs som t.ex. 4.27 eller 7.0
I komplexa tal (complex)
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
9
NÅGRA INBYGGDA DATATYPER
Varför skilja mellan heltal och flyttal
I Begränsad lagringsutrymme– begränsad noggrannhet
I Decimaltal kan inte lagras exakt– Oftast inget problem
I Alla decimaltal kan ej lagras exakt med flyttal
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
10
NÅGRA INBYGGDA DATATYPER
Operationer med tal
x * y Produkten av x och yx + y Summan av x och yx - y Differensen av x och yx / y Kvoten mellan x och yx // y Heltalskvoten mellan x och yx % y Resten vid heltalsdivision mellan x och y-x Negationen av xabs(x) Absolutvärdet av xpow(x, y) xy, x upphöjt i yx**y Se ovan
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
11
NÅGRA INBYGGDA DATATYPER
Konvertering av tal
int(x) x konverterat till heltallong(x) x konverterat till stort heltalfloat(x) x konverterat till flyttal
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
12
NÅGRA INBYGGDA DATATYPER
Matematiska funktioner
ceil(x) Minsta heltal som är större än xfloor(x) Största heltal som är mindre än xsqrt(x)
√x
sin(x) sinus av xcos(x) cosinus av xtan(x) tangens av xpi π
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
13
NÅGRA INBYGGDA DATATYPER
Division av heltal
I Ett heltal kan aldrig innehålla decimalerI Vid division av två heltal kan inte resultat innehålla
decimaler>>> 4 / 22>>> 5 / 22
I Avrundas till närmast mindre heltal>>> -5/2-3
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
14
NÅGRA INBYGGDA DATATYPER
Automatisk konvertering
I Är minst ett av operanderna ett flyttal blir resultatetett flyttal
>>> 4 / 2.02.0>>> 5 / 2.02.5
I Krävs flyttalsdivision använd konvertering>>> 5 / float(2)2.5
I OBS!!!>>> float(5 / 2)2.0
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
15
NÅGRA INBYGGDA DATATYPER
Boolska värden
I Kan uttryckas som sant eller falsktI Finns definierat som True och FalseI Jämförelseoperationer
x == y Likhet (x ekvivalent med y)x != y Olikhet (x inte ekvivalent med y)x < y x strikt mindre än yx > y x strikt större än yx = y x större eller lika med ynot Negerar efterföljande boolskt värde
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
16
NÅGRA INBYGGDA DATATYPER
Sekvenser
I Vanligt att värden lagras i en sekvens (given ordning)I Flertal sätt att lagra sekvenser i Python
– Strängar– Listor– Tupler– etc.
Första värdet i en sekvens har index 0!
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
17
NÅGRA INBYGGDA DATATYPER
Listor
I En lista är precis vad det låter som, en sekvens avvärden.
I Listor skapas med hakparenteser.I Listor kan innehålla värden av olika datatyper
list = [3.0, "Anna", 4]
I För att hämta värden ur en lista används ocksåhakparenteser
item = list[1]list[1] = "Karin"
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
18
NÅGRA INBYGGDA DATATYPER
Tupler
I En tupel är identisk med en lista, men värden i entupel kan inte ändras
I Tupler skapas med parenteser.I Tupler kan innehålla värden av olika datatyper
tupel = (3.0, "Anna", 4)
I För att hämta värden ur en tupel används ocksåhakparenteser
item = tupel[1]tupel[1] = "Karin" \#FEL!! Kan inte ändra värde
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
19
Styra instruktionsflödet
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
20
STYRA INSTRUKTIONSFLÖDET
Flöde av instruktioner
I Ett program exekveras sats för satsI Man vill kunna villkora eller repetera vissa satser
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
21
STYRA INSTRUKTIONSFLÖDET
Indentering och kodblock
I Schematisk kan satserna i ett program delas upp imindre delar som utförs i grupp, kodblock
I Ett kodblock utförs oftast i sin helhet eller inte allsI Kodblock kan uttryckas på olika sätt i olika språk
(begin ... end, ... , etc.)I I Python anges ett kodblock med indenteringI Alla satser i ett kodblock ska ha samma indentering
– Samma antal blanksteg framför satsen
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
22
STYRA INSTRUKTIONSFLÖDET
Satser och sammansatta satserI Lite slarvig i kursboken
SatsDet minsta självständiga uttrycket i ett imperativtprogrammeringsspråk.
I TilldelningarI FunktionsanropI etc.
Sammansatta satserkodblock eller sats som är knutet till ett kodblock
I KodblockI VillkorssatserI Repetitionssatser
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
23
STYRA INSTRUKTIONSFLÖDET
Villkorssatser
I Ett kodblock utförs enbart om ett villkor uppfyllsif num > 10:
print "Talet är större än 10"
I och ett annat om det är falskt.if num > 10:
print "Talet är större än 10"else:
print "Talet är mindre eller lika med 10"
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
24
STYRA INSTRUKTIONSFLÖDET
Flera villkorI En variant där man kan välja mellan flera
valmöjligheterif day == 1:
print "Måndag"elif day == 2:
print "Tisdag"elif day == 3:
print "Onsdag"elif day == 4:
print "Torsdag"elif day == 5:
print "Fredag"elif day == 6:
print "Lördag"elif day == 7:
print "Söndag"Språket Python - Del 1 Pedher Johansson
Grundkurs i programmering med Python Institutionen för datavetenskap
25
STYRA INSTRUKTIONSFLÖDET
Repetition
I Ett kodblock upprepas (itereras) tills ett villkor äruppfyllt
i = 1while i < 10:
print ii += 2 # Samma sak som att skriva i = i + 2
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
26
STYRA INSTRUKTIONSFLÖDET
Iterera över en sekvens
I Om man vill upprepa ett kodblock för varje element ien lista
personer = ["Katrin", "Pelle", "Ida", "Thomas"]for person in personer:
print person
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
27
STYRA INSTRUKTIONSFLÖDET
Iterera över ett intervall
I Det är ofta man vill upprepa något ett visst antalgånger
I Funktionen range skapar en lista med heltal inomett intervall
range(4) # Ger listan [0, 1, 2, 3]range(-1,2) # Ger listan [-1, 0, 1]range(1,7,2) # Ger listan [1, 3, 5]
I Kombinerat med for ger detta ett kraftfullt verktyg
for i in range(5,9):print i
for i in range(0,10,2):print i
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
28
Modulen sys
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
29
MODULEN SYS
Använda moduler
I Som vi sa i första lektionen finns många modulermed ytterligare funktioner att använda.
I Modulen sys ger tillgång till funktioner och uppgifterom själva programmet och operativsystemet(systemet)
I Moduler läggs till i programmet med importI Detta gör vanligtvis först i programmet
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
30
MODULEN SYS
Argument till program
I Praktiskt är att kunna skicka med information närman startar ett program
>>> python intervall.py 4 7
I Denna information samlas i en lista som hetersys.argv
I Allt i denna lista är strängar och första värdet ärprogramnamnet.
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
31
MODULEN SYS
Exempel
# Programmet vill ha två värden när det körs.# Programmet skriver ut en sekvens av värden# där första värdet är startvärdet och sista# värdet är stoppvärdet.import sys
start = int (sys.argv[1])stop = int(sys.argv[2])
for i in range(start, stop+1):print i
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
32
MODULEN SYS
Avsluta program
I Program kan även avslutas i förtid# Programmet skriver ut värden mellan# 0 och talet som angesimport sys
max = int(sys.argv[1])+1if max < 1:
print "First argument must be positive"sys.exit(0)
for i in range(max):print i
Språket Python - Del 1 Pedher JohanssonGrundkurs i programmering med Python Institutionen för datavetenskap
Ett programmeringsspråks byggstenarNågra inbyggda datatyperStyra instruktionsflödetModulen sys