(Hashtabell) En hashtabell kan ses som en lista där programmeraren associerar egna nycklar (index) till varje element som ska läggas i tabellen : Nycklar: 5 1 12 Element: maj jan dec 1/20 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 2/20 1
print (ht[1]) print (ht[5]) print (ht[15]) Vad skrivs ut av ovanstående? 3/20 if 15 in ht: x = ht[15] x = ht.get(15, FINNS EJ! ) y =ht.get(15) Vad får x och y för värde om 15 inte finns i tabellen? 4/20 keys= [1,12,5] values=[ jan, dec, maj ] parvis=zip(keys,values) ht=dict(parvis) 1 12 zip jan dec 5 maj 5/20 2
keylist = list(ht.keys()) vallist = list(ht.values()) 6/20 len(ht) del ht[12] htcopy = ht.copy() 7/20 lista = 3*[2] #skapar en lista med 3 matris=4*[3*[2]] print (matris) matris[0][1]= 5 print (matris) Vad skrivs ut? Varför? Rita en minnesbild som kan förklara detta. 8/20 3
matris Minnesbilder matris 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 9/20 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? 10/20 file = open( filename.txt, r ) file = open( filename.txt, w ) file = open( filename.txt, a ) r+, w+, a+ 11/20 4
contents = file.read() fivechars = file.read(5) oneline = file.readline() alllines = file.readlines() 12/20 file.write( Hejsan hoppsan ) file.writelines(stringlist) file.close() 13/20 Exception try och except är reserverade ord som används för hantering av exekveringsfel. plista= ['s','v','m','mp','fp','c','kd'] try: i=int(input( Ange index: )) parti=plista[i] except: print ( Nagot fel intraffade ) 14/20 5
try: Syntax Kod som kan orsaka något typ av exekveringsfel except: Kod som exekveras om och endast om det blir något fel i kodblocket efter try 15/20 Så här går det till Kod i blocket mellan try: och except: börjar exekvera, men så fort ett fel uppstår i någon rad avbryts exekveringen direkt, resterande rader i blocket exekveras inte och koden som finns i blocket efter except: börjar exekvera i stället. 16/20 Mer detaljerad pista= ['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! 17/20 6
Typ IOError IndexError KeyError TypeError ValueError ZeroDivisionError Olika typ av fel Beskrivning uppstår när man vill öppna en fil som inte finns. Uppstår vid tillgång till ett index i en lista som inte finns Uppstår när en nyckel inte finns i uppsalgslista Uppstår när en inbyggd operation eller funktion tillämpas på ett objekt av olämplig typ Uppstår när funktion används med ett parameter med korrekt typ men fel värde Uppstår när divisor i en divition är 0 18/20, är väldigt lämplig för snabba sökningar Var noga med referenser, det är endast typen tal (int, float) som inte använder referenser. Filer kan öppnas för olika ändamål, lösning,skrivning och tilläggning av data try, except används för att hantera exekveringsfel. 19/20 7