7
1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 Hashtabeller filer Särfall (exception) 1/20 Sammanfattning Felhantering Filhantering Referenser Dictionary (Hashtabell) Översikt Dictionary (Hashtabell) En hashtabell kan ses som en lista där programmeraren associerar egna nycklar (index) till varje element som ska läggas i tabellen : ”dec” ”jan” ”maj” Element: 12 1 5 Nycklar: 2/20 Sammanfattning Felhantering Filhantering Referenser Dictionary (Hashtabell) Översikt Skapa hashtabell Skapa med måsvingar och par av nyckel och värde, enligt nedan: ht={1:”jan”, 12:”dec”, 5:”maj”} Skapa med dict(): ht=dict() ht[1]=”jan” ht[12]=”dec” ht[5]=”maj”

Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

1

Föreläsning 5Programmeringsteknik och

Matlab DD1312

• Hashtabeller• filer• Särfall (exception)

1/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Dictionary (Hashtabell)

• En hashtabell kan ses som en listadär programmeraren associeraregna nycklar (index) till varjeelement som ska läggas i tabellen :

”dec””jan””maj”Element:

1215Nycklar:

2/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Skapa hashtabell

• Skapa med måsvingar och par av nyckeloch värde, enligt nedan:

ht={1:”jan”, 12:”dec”, 5:”maj”}

• Skapa med dict():ht=dict()ht[1]=”jan”ht[12]=”dec”ht[5]=”maj”

Page 2: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

2

3/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Identifiera element• Element identifieras mednyckelobjekt, men det måste finnasett objekt lagrat med given nyckel:

print (ht[1])print (ht[5])print (ht[15])

Vad skrivs ut av ovanstående?

4/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Kontrollerad åtkomst• Alternativ 1: Kontrollera förekomstinnan åtkomst.if 15 in ht:

x = ht[15]

• Alternativ 2: Använd get() meddefault-värde:x = ht.get(15, ”FINNS EJ!”)

y =ht.get(15)

Vad får x och y för värde om 15 inte finns itabellen?

5/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt Skapa hashtabell frånlistor

• Hashtabell kan skapas från tvålistor som att dra ihop ettblixtlås:

keys= [1,12,5]

values=[”jan”,”dec”,”maj”]

parvis=zip(keys,values)

ht=dict(parvis)1 12

jan dec

5

maj

zip

Page 3: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

3

6/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt Listor med nycklaroch värden

• Metoden keys() returnerar enlista med alla nycklar• Metoden values() returerar enlista med alla värden

keyList = list(ht.keys())

valList = list(ht.values())

7/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt Ytterligareoperationer

• Antalet element i tabellen:len(ht)

• Ta bort element:del ht[12]

• Kopiera hela tabellen:htcopy = ht.copy()

8/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Listor och forlista = 3*[2] #skapar en lista med 3matris=4*[3*[2]]print (matris)matris[0][1]= 5print (matris)

Vad skrivs ut? Varför?Rita en minnesbild som kan förklara detta.

Page 4: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

4

9/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Minnesbilder

2 2 2 2 2 2

2 2 2

2 2 2

2 2 2

matris matris

10/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Lösning

matris=[3*[2] for i in range(4)]

print matris

matris[0][1] = 5

print(matris)

Vad skrivs ut av ovanstående kod?

11/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Öppna filEn fil kan öppnas för olika ändamål:• För läsning:

file = open(”filename.txt”, ”r”)

• För skrivning (skriver över befintlig fil)file = open(”filename.txt”, ”w”)

• För tillägg till slutet av filen:file = open(”filename.txt”, ”a”)

• Ytterligare alternativ ”r+”, ”w+”, ”a+”fungerar som utan plus fast man kan bådeskriva och läsa.

Page 5: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

5

12/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Läs från öppen fil• Hela filen:

contents = file.read()

• Bestämt antal tecken:fiveChars = file.read(5)

• En rad:oneLine = file.readline()

• Alla rader till en lista:allLines = file.readlines()

13/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt Skriv till öppen fil ochstäng

• Skriv strängfile.write(”Hejsan hoppsan”)

• Elementen i en lista:file.writelines(stringlist)

• När du läst eller skrivit klart från/tillen fil så stänger du den:file.close()

14/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Exception

• try och except är reserverade ordsom används för hantering avexekveringsfel.

plista= ['s','v','m','mp','fp','c','kd']try:

i=int(input(”Ange index: ”))

parti=plista[i]except:

print (”Nagot fel intraffade”)

Page 6: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

6

15/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Syntax

try:

Kod som kan orsaka något typav exekveringsfel

except:

Kod som exekveras om ochendast om det blir något fel ikodblocket efter try

16/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Så här går det till

Kod i blocket mellan try: ochexcept: börjar exekvera, men såfort ett fel uppstår i någon radavbryts exekveringen direkt,resterande rader i blocketexekveras inte och koden somfinns i blocket efter except: börjarexekvera i stället.

17/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Mer detaljeradpista= ['s','v','m','mp','fp','c','kd']

try:

i=int(input('Ange index: '))

parti=plista[i]

except IndexError:

print 'ogilltigt index'

except ValueError:

print 'index maste var ett tal'

except:

print ’uppstod något tokänd fel!’

Page 7: Föreläsning 5 Programmeringsteknik och Matlab …...1 Föreläsning 5 Programmeringsteknik och Matlab DD1312 •Hashtabeller •filer •Särfall (exception) 1/20 Sammanfattning

7

18/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Olika typ av fel

Uppstår när divisor i en divition är 0ZeroDivisionError

Uppstår när funktion används medett parameter med korrekt typ menfel värde

ValueError

Uppstår när en inbyggd operationeller funktion tillämpas på ett objektav olämplig typ

TypeError

Uppstår när en nyckel inte finns iuppsalgslista

KeyError

Uppstår vid tillgång till ett index i enlista som inte finns

IndexError

uppstår när man vill öppna en filsom inte finns.

IOError

BeskrivningTyp

19/20

Sammanfattning

Felhantering

Filhantering

Referenser

Dictionary(Hashtabell)

Översikt

Sammanfattning

• Dictionary, är väldigt lämplig försnabba sökningar

• Var noga med referenser, det ärendast typen tal (int, float) som inteanvänder referenser.

• Filer kan öppnas för olika ändamål,lösning,skrivning och tilläggning avdata

• try, except används för atthantera exekveringsfel.