Introduktion till programmering - iteration, felhantering och datasamlingar

Preview:

DESCRIPTION

Slides from the course Introduction to Programming, lecture held at The Department of Computer and Systems Sciences at Stockholm University 2014

Citation preview

Introduktion till programmering

Iteration, felhantering och datasamlingar

Simon Johanssonmail@simon-johansson.com

name = 'Simon'print 'Jag heter ' + name

x = 30y = 20svar = x + yprint svar

Repetition - variabler & datatyper ex.1

Jag heter Simon

50

temperatur = 0

if temperatur >= 20: print 'Varmt och skönt!'else: print 'På med vantar och mössa'

Repetition - selektion ex.1

På med vantar och mössa

def addera(tal1, tal2): summa = tal1 + tal2 return summa

def main(): svar = addera(5, 10) print svar

main()

Repetition - funktioner ex.2

15

Felhantering

Olika sorters fel:● Syntaktiska fel● Semantiska fel● Undantag

Robusthet: kod som även kan hantera de undantag som uppstår när användaren inte beter sig som förväntat

try: #Kod som alltid körs, #stöter potentiellt på ett error.

except typ-av-error: #Kod som körs om try-blocket stöter #på ett error

Felhantering

try: userInput = raw_input('Skriv in ett heltal:') number = int( userInput )

except ValueError: print 'Det måste vara ett heltal!'

ValueError ex.3

def dividera(a, b):try:

kvot = a / b return 'Svaret är: ' + str(kvot)

except ZeroDivisionError: return 'Division med 0 är inte tillåtet.'

ZeroDivisionError - del 1 ex.4

def main(): svar = dividera(10, 2) print svar

svar2 = dividera(5, 0) print svar2

main()

ZeroDivisionError - del 2 ex.4

Svaret är 5

Division med 0 är inte tillåtet.

Booleska variabler

Booleska variabler tilldelas lämpligen något av värdena från följande konstanter:

● True● False

Men, till skillnad från i vissa andra språk så finns det även andra värden för sant och falskt

Booleska värden

Som falskt räknas även bl a:

● None● Siffran 0 ● Tomma strängar eller datasamlingar: ””,[],()

De flesta andra värden räknas som sanna

villkor = False

if villkor == True: print 'Ja, det är sant!'else: print 'Nej, det är falskt.'

Boolska villkor ex.5

Nej, det är falskt

Beslutsstrukturer

Coldoutside

Wear a coat

True

False

Wear a hat

if hp == 100: print 'Du mår super!'

if-elif-else ex.6

Du mår helt okej.

elif hp <= 99 and hp >= 50: print 'Du mår helt okej.'

elif hp <= 49 and hp >= 1: print 'Du mår inget vidare.'

else: print 'Du är tyvärr död.'

hp = 62

Iteration

Iteration = upprepning

Upprepa en beräkning eller en annan operation tills ett önskat resultat har uppnåtts

Typer av loopar: while & for

Användbara kommandon: break & continue

Iteration: while-loop

Condition Statement(s)True

False

tal = 1while tal <= 7: print tal tal = tal + 1

while-loop ex.7

1

2

3

4

5

6

7

tal = 2while tal <= 1000:

print tal tal *= 2 if tal == 128: break

while-loop: break ex.8

2

4

8

16

32

64

128

Iteration: for-loop

Bäst när du vet antalet iterationer

Passar bra med datasamlingar

Används tillsammans med range()

for i in range(0,7):print i

for-loop ex.10

0

1

2

3

4

5

6

for i in range(0,7,2):print i

for-loop ex.11

0

2

4

6

for i in range(7,0,-2):print i

for-loop ex.12

7

5

3

1

Datasamlingar

Listor - []Tupletter - ()Ordlistor - {}

Ta nytta av inbyggda funktioner: len() & extend()

frukter = ["Mango", "Kiwi", "Melon", "Lime"]

print frukter[0]

print frukter[3]

Datasamlingar: listor ex.13

Mango

Lime

frukter = ["Mango", "Kiwi", "Melon", "Lime"]

print len(frukter)

Datasamlingar: listor ex.13

4

Plommon

5

frukter.extend(["Plommon"])print frukter[4]print len(frukter)

frukter = ["Mango", "Kiwi", "Melon", "Lime"]

for element in frukter:

print element.upper()

Datasamlingar: listor ex.13

MANGO

KIWI

MELON

LIME

person = {"namn": "Simon", "tele": 12345678,"yrke": "Designer"}

print person["namn"]print person["tele"]

Datasamlingar: ordlistor ex.15

Simon

12345678

Sammanfattning

Felhantering: try/except

Booleska variabler: True & False

Utökad selektion: if/elif/else

Iteration: while & for

Datasamlingar: [], (), {}

from random import randint

def main():numberToGuess = randint(1,100)answer = Falsewhile answer == False:

try:userInput = int(raw_input("Gissa talet:"))

except ValueError:print "Det måste vara ett heltal"continue

Sammanfattningsexempel - del 1 ex.16

if userInput > numberToGuess:print "Fel, för högt!"

elif userInput < numberToGuess:print "Fel, för lågt!"

else:answer = Trueprint "Rätt!"

main()

Sammanfattningsexempel - del 2 ex.16

Tips

● Experimentera med exemplen från denna föreläsning (speciellt looparna)

● Försök tänka er in i verkliga implementationer av koncepten

● Ställ en massa frågor på handledningen och i forumet på iLearn2

Frågor?!

Recommended