32
Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Pedher Johansson Institutionen för datavetenskap

Språket Python - Del 1 - Grundkurs i programmering med Python · 2009. 10. 6. · Grundkurs i programmering med Python Institutionen för datavetenskap. 30 MODULEN SYS Argument till

  • 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