Upload
simon-johansson
View
3.113
Download
0
Embed Size (px)
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 [email protected]
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?!