729g06 programmering och logik - ida.liu.se python är p1.move_to ... ovanstående notation är bnf...
TRANSCRIPT
![Page 1: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/1.jpg)
729G06 Programmering och logikOOP: Klassdiagram, arv
Allmänt: Undantagshantering
![Page 2: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/2.jpg)
Upplägg av Python-delen
![Page 3: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/3.jpg)
Dagens föreläsning⁃ En sista repetition av begreppen klass, instans, instansvariabel, instansmetod, konstruktor, self
⁃ Klassdiagram: Vad? Varför? Hur?
⁃ Arv: hierarkisk återanvändning av kod
⁃ Undantag och undantagshantering: ett system för att hantera saker som inte fungerar som de ska.
![Page 4: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/4.jpg)
Begrepp dess tillämpningar som ni måste förstå och kunna användaOm ni inte kan dem, lär er dem genast!
⁃ Klass och instans: skillnad och relation mellan begreppen
⁃ instansvariabler, instansmetoder, self
⁃ Skapa en instans: Vad är en konstruktor? Hur ser anrop till en konstruktor ut? Vad gör metoden __init__()?
⁃ Syntax:
Punkt-notation för moduler, klasser, instanser
import av moduler
![Page 5: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/5.jpg)
En klass är en mall som används för att skapa ett objekt
objekt kallas också för instanser
![Page 6: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/6.jpg)
En klass är definierar de instansvariabler och metoder som dess instanser kommer ha.
![Page 7: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/7.jpg)
Instansvariabler och metoder kallas ibland gemensamt för en klass attribut
![Page 8: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/8.jpg)
Instansiering
defmove_to(self,x,y):self.my_turtle.setpos(x,y)…
draw_square(self):foriinrange(4):…
defspit(self):self.my_spit.fd(100)self.my_spit.bk(100)
name:strmy_turtle:turtle.Turtlemy_spit:turtle.Turtle
Pokemon
move_to(self,x,y)draw_square(self)spit(self)
name:"Bulbasaur"my_turtle:<turtle.Turtleat0x105f1a3c8>my_spit:<turtle.Turtleat0x105fb9160>
p1 : Pokemon
p1=Pokemon("Bulbasaur")
![Page 9: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/9.jpg)
Metodanrop
defmove_to(self,x,y):self.my_turtle.setpos(x,y)…
draw_square(self):foriinrange(4):…
defspit(self):self.my_spit.fd(100)self.my_spit.bk(100)
name:strmy_turtle:turtle.Turtlemy_spit:turtle.Turtle
Pokemon
move_to(self,x,y)draw_square(self)spit(self)
name:"Bulbasaur"my_turtle:<turtle.Turtleat0x105f1a3c8>my_spit:<turtle.Turtleat0x105fb9160>
p1 : Pokemon
p1.move_to(100,400)
p1=Pokemon("Bulbasaur")
I Python är p1.move_to(100,400)samma sak somPokemon.move_to(p1,100,400)
OBS! Detta är inte fallet för alla objektorienterade språk
![Page 10: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/10.jpg)
Grammatik och lexikon för importer
import_stmt::="import"module["as"name](","module["as"name])*|"from"relative_module"import"identifier["as"name](","identifier["as"name])*|"from"relative_module"import""("identifier["as"name](","identifier["as"name])*[","]")"|"from"module"import""*"module::=(identifier".")*identifierrelative_module::="."*module|"."+name::=identifier
https://docs.python.org/3.4/reference/simple_stmts.html#import
Ovanstående notation är BNF (Backus Normal Form) som ofta används inom datavetenskap för att beskriva kontextfria grammatiker.
![Page 11: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/11.jpg)
Grammatik och lexikon för importer
import_stmt::="import"module["as"name](","module["as"name])*|"from"relative_module"import"identifier["as"name](","identifier["as"name])*|"from"relative_module"import""("identifier["as"name](","identifier["as"name])*[","]")"|"from"module"import""*"
Det finns 4 varianter -importrandom,turtleast
![Page 12: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/12.jpg)
Grammatik och lexikon för importer
import_stmt::="import"module["as"name](","module["as"name])*|"from"relative_module"import"identifier["as"name](","identifier["as"name])*|"from"relative_module"import""("identifier["as"name](","identifier["as"name])*[","]")"|"from"module"import""*"
Det finns 4 varianter -importrandom,turtleast-fromrandomimportrandint,choiceasrandom_choice
![Page 13: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/13.jpg)
Grammatik och lexikon för importer
import_stmt::="import"module["as"name](","module["as"name])*|"from"relative_module"import"identifier["as"name](","identifier["as"name])*|"from"relative_module"import""("identifier["as"name](","identifier["as"name])*[","]")"|"from"module"import""*"
Det finns 4 varianter -importrandom,turtleast-fromrandomimportrandint,choiceasrandom_choice-fromrandomimport(randint,choiceasrandom_choice)
![Page 14: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/14.jpg)
Grammatik och lexikon för importer
import_stmt::="import"module["as"name](","module["as"name])*|"from"relative_module"import"identifier["as"name](","identifier["as"name])*|"from"relative_module"import""("identifier["as"name](","identifier["as"name])*[","]")"|"from"module"import""*"
Det finns 4 varianter -importrandom,turtleast-fromrandomimportrandint,choiceasrandom_choice-fromrandomimport(randint,choiceasrandom_choice)-fromrandomimport*
![Page 15: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/15.jpg)
Klassdiagramett slags pseudokod för OOP
![Page 16: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/16.jpg)
UML: Unified Modelling Language
Klassnamn
namn:attributtypnamn:attributtyp=defaultvärde
operation()operation():returdatatypoperation(parameterlista)operation(parameterlista):returdatatyp
![Page 17: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/17.jpg)
UML, klassdiagram: relationer mellan objektObjekt kan ha någon form av relation till andra objekt
⁃ association: allmän relation. kardinalitet (antal) och roll kan anges. "Studentharläst0..*böcker"
aggregering: typ av association. "har en", "del av". "Studentäger0..*böcker"
komposition: typ av association. "består av". "Studenthar1hjärta" (starkare
beroende mellan objekten, tänk "kan inte finnas utan")
⁃ arv (basklass/härledd klass): ärver attribut/operation från (kommer mer om detta strax)
⁃ beroende: svag relation. t.ex. någon metod får in en instans som argument.
⁃ implementation: man kan använda klassdefinitioner som mallar för andra klasser. Denna association kan användas för att visa när en klass implementerar en sådan klassmall (abstrakta klasser)
![Page 18: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/18.jpg)
UML: Relationer
Yanpas. Wikimedia Commons
En dubbelriktad association kan ritas utan pilar.
![Page 19: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/19.jpg)
NinjaZombieSimulation
add_zombie(turtle:turtle.Turtle)add_ninja(turtle:turtle.Turtle)move_zombies_towards_ninjas()move_ninjas_away_from_zombies()scatter_all()run_timestep()
screen:turtle.Screenzombie_color:strninja_color:strninjas:Swarmzombies:Swarm
NinjaZombieSimulation
![Page 20: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/20.jpg)
Swarm
run_swarm_behaviours()add_turtle(turtle:turtle.Turtle)keep_swarm_distance()move_away_or_towards_positions(positions:list,towards:bool=True)move_away_or_towards_position(position:turtle.Vec2D,towards:bool=True)calculate_unit_vec(vector:turtle.Vec2D):turtle.Vec2Dcalc_velocity(a_turtle:turtle.Turtle,another_turtle:turtle.Turtle):turtle.Vect2Daccelarate_turtle(turtle_index:int,accelaration:float)update_velocities()wrap_turtles()wrap_turtle(a_turtle:turtle.Turtle)scatter_turtles()get_swarm_positions():listget_swarm_center():turtle.Vec2D
friction:floataway_towards_multiplier:floatbounds:tuplemove_speed:floatpref_swarm_spacing:floatturtle_swarm:listturtle_velocities:list
Swarm
![Page 21: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/21.jpg)
turtle.Turtle, Swarm & NinjaZombieSimulation
add_zombie(turtle:turtle.Turtle)add_ninja(turtle:turtle.Turtle)move_zombies_towards_ninjas()move_ninjas_away_from_zombies()scatter_all()run_timestep()
screen:turtle.Screenzombie_color:strninja_color:strninjas:Swarmzombies:Swarm
NinjaZombieSimulation
run_swarm_behaviours()…
friction:floataway_towards_multiplier:floatbounds:tuplemove_speed:floatpref_swarm_spacing:floatturtle_swarm:listturtle_velocities:list
Swarm
2 1turtle.Turtle
10…*
![Page 22: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/22.jpg)
Arv i Python
![Page 23: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/23.jpg)
Hierarkiska relationer
http://www.biologycorner.com/worksheets/taxonomy_interpret.html
![Page 24: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/24.jpg)
Arv / härleda klasser⁃ När en klass ärver från en annan, följer alla attribut, dvs
instansvariabler och metoder med.
⁃ Syfte: Abstraktion och kodåtervinning
![Page 25: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/25.jpg)
Exempel
classDataFile(object):
def__init__(self,filepath=None): self.filepath=filepath
data=DataFile("data.txt")print(data)
__str__():str
object
filepath:str
DataFile
![Page 26: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/26.jpg)
Arv i Python⁃ Alla klasser i Python har en basklass - en klass som de
bygger vidare på.
⁃ Klassen object är den mest grundläggande klassen i
Python.
⁃ Klassen object har metoder som alla andra klasser ärver som t.ex. __str__()
⁃ Om klassen DataFile bygger vidare på object, kallar man
object för basklassen för klassen DataFile(eng. base
class). DataFileär en klass, härledd (eng. derived) från
klassen object.
![Page 27: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/27.jpg)
Syntax klass med arv
classBase(object):pass
classDerived(Base):pass
![Page 28: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/28.jpg)
Arv i Python forts⁃ En härledd klass har alla attribut (instansvariabler och
metoder) som dess basklass har.
⁃ En härledd klass kan ges ytterligare attribut.
⁃ En härledd klass kan överrida attribut från dess basklass.
![Page 29: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/29.jpg)
Arv - exempel
classAnimal(object):
def__init__(self):self.food="plants"
defrun(self):print("Irunlikethewind.")
#Härleddaklasserärverallaattributfrån#sinbasklass,dvsinstansvariableroch#metoderclassHorse(Animal):pass
>>>h=Horse()
>>>h.run()Irunlikethewind.
![Page 30: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/30.jpg)
Basklass - härledd klass: med __init__classBase(object):def__init__(self,arg1):self.arg1=arg1
classDerivedA(Base):def__init__(self,arg1,arg2): #Explicitanropavbasklassens__init__()-metodBase.__init__(self,arg1)self.arg2=arg2
classDerivedB(Base):def__init__(self,arg1,arg2): #Användningavsuperförattrefereratillbasklassen #syntax:super(härledd_klass,instans_av_härledd_klass)super(DerivedB,self).__init__(arg1)self.arg2=arg2
![Page 31: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/31.jpg)
UndantagExceptions
![Page 32: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/32.jpg)
Exceptions - undantag⁃ Exceptions (sv undantag) är ett sätt att hantera fel i kod
som kan utlösas (eng throw/raise).
⁃ Vid fel kan ett undantag utlösas. Programmet avbryter sitt normala flöde för att gå in i "undantagsläge".
⁃ Finns inget specificerat undantagsläge, kraschar programmet.
![Page 33: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/33.jpg)
Undantag i Python⁃ Om man vill hantera undantag i Python lägger man
koden som kan utlösa undantag i ett try-block.
⁃ Undantag hanteras sedan i ett except-block.
![Page 34: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/34.jpg)
Exempel på undantag i Python⁃ ZeroDivisionError
⁃ IOError
⁃ IndexError
⁃ KeyError
⁃ TypeError
![Page 35: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/35.jpg)
Mönster för undandagshantering i Python
try: # här lägger man koden som kan utlösa ett undantag except [namn på exception] [as <namn på undantagsinstans>]: # här lägger man koden för vad som ska hända
Här ska inte hakparenteserna skrivas ut, utan visar att det som står innanför dem är valfritt. Det som står inom mindre än/större än-tecken måste vara med. I det här fallet bara om 'as' används. Mindre än/större än-tecknena ska inte heller stå med.
![Page 36: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/36.jpg)
Exempel: Fånga undantag
letters=["a","b","c","d","e","f"]
try:l_index=0whileTrue:print(letters[l_index])l_index+=1except:print("Anexceptionwasraised.")
![Page 37: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/37.jpg)
Exempel: Fånga och instansiera undantag
letters=["a","b","c","d","e","f"]
try:l_index=0whileTrue:print(letters[l_index])l_index+=1exceptExceptionaserror:print("Anexceptionwasraised.")print(error)
![Page 38: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/38.jpg)
Exempel: Fånga specifikt undantag
letters=["a","b","c","d","e","f"]
try:l_index=0whileTrue:print(letters[l_index])l_index+=1exceptIndexError:print("Index"+str(l_index)+"isoutofbounds.")
![Page 39: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/39.jpg)
Exempel: Fånga och instansiera specifikt undantag
letters=["a","b","c","d","e","f"]
try:l_index=0whileTrue:print(letters[l_index])l_index+=1exceptIndexErrorasindex_error:print("Index"+str(l_index)+"isoutofbounds.")print(index_error)
![Page 40: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/40.jpg)
Olika sätt att använda undantag⁃ För att fånga potentiella fel i koden och åtgärda dem
⁃ Som ett alternativ till "vanlig" flödeskontroll/if-satser
![Page 41: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/41.jpg)
Kontroll av argument med hjälp av flera undantag
defget_dog_desc(dog_dict):try:output_string="Mynameis"+dog_dict['name']+""output_string+="andIam"+str(dog_dict['age'])+"yearsold."returnoutput_stringexceptTypeErrorastype_error:print("Argumentnotadictionary")print(type_error)exceptKeyErroraskey_error:print("Wrongkeysindictionary.")print(key_error)
![Page 42: 729G06 Programmering och logik - ida.liu.se Python är p1.move_to ... Ovanstående notation är BNF (Backus Normal Form) som ofta används inom ... tuple move_speed : float](https://reader031.vdocuments.site/reader031/viewer/2022021504/5ab3b7007f8b9a284c8e9e6a/html5/thumbnails/42.jpg)
Kontroll av argument med hjälp av flera undantag som ett fall
defget_dog_desc(dog_dict):try:output_string="Mynameis"+dog_dict['name']+""output_string+="andIam"+str(dog_dict['age'])+"yearsold."returnoutput_stringexcept(TypeError,KeyError)aserror:print("Notadictionaryorkeynotpresentindictionary.")print(error)