Upload
lynda
View
45
Download
0
Embed Size (px)
DESCRIPTION
Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007. Vad kan vi nu?. Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Funktioner och moduler Villkorssatsen if Looparna for och while. Denna föreläsning. - PowerPoint PPT Presentation
Citation preview
Ordlistor, filhantering och ut på webbenLinda Mannila 20.11.2007
Vad kan vi nu? Primitiva datatyper
Tal, strängar, booleska värden Samlingsdatatyp
Listan Utskrift Indata Felhantering Funktioner och moduler Villkorssatsen if Looparna for och while
Denna föreläsning
Ny datatyp – ordlistan (dictionary)
Modulen webbrowser Filhantering
Ordlistor (dictionaries)
Samlingsdatatyp ”Nyckel-värde”-par Påminner om en vanlig ordbok
katt kissa hund koira ko lehmä
Ordlistor (dictionaries) Skapar en tom ordlista:
ordlista = {}
Skapar en ordlista med ett nyckel-värde-par i.
ordlista = {’katt’:’kissa’}
Skapa ordlistor Skapar en tom ordlista:
ordlista = {}
Skapar en ordlista med ett nyckel-värde-par i.
ordlista = {’katt’:’kissa’}
NyckelVärde
Nycklar och värden
Får endast finnas en nyckel med samma namn i en ordlista
ordlista = {’katt’ : ’kissa’,
’katt’ : ’misu’}
Nycklar och värden
Får endast finnas en nyckel med samma namn i en ordlista
ordlista = {’katt’ : ’kissa’,
’katt’ : ’misu’}
FEL! katt får ej finnas som nyckel flera gånger i samma ordlista
Lägga till i en ordlista Sätter till ett nytt par i ordlistan
ordlistan[nynyckel] = nyttvärde
>>> ordlista = {'katt' : 'kissa'}>>> ordlista{'katt': 'kissa'}
>>> ordlista['hund'] = 'koira'>>> ordlista{'hund': 'koira', 'katt': 'kissa'}
Lägga till i en ordlista Om nyckeln redan finns ersätts det
gamla värdet med det nya
>>> ordlista{'hund': 'koira', 'katt': 'kissa'}
>>> ordlista['katt'] = 'misu'>>> ordlista{'hund': 'koira', 'katt': 'misu'}
Funktioner på ordlistor
Ta bort nyckel-värde-par: del Funktionen del tar bort ett
nyckel-värde-par ur ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> del(ordlista['hund'])>>> ordlista{'katt': 'misu'}
Funktionen len berättar hur många nyckel-värde-par som finns i ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> len(ordlista) 2
Funktioner på ordlistor
Antalet par i en ordlista: len
Exempel
sve_eng = {'röd' : 'red',
'blå' : 'blue',
'grön': 'green',
'gul' : 'yellow'}
print "%-9s %-9s" % ("Svenska", "Engelska")
print "------------------"
for ord in sve_eng:
print "%-9s %-9s" % (ord, sve_eng [ord])
Provkörning:Svenska Engelska ------------------blå blue gul yellow grön green röd red
Ordlistmetoder
keys()keys() returnerar en lista
över vilka nycklar som finns i ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> ordlista.keys()['hund', 'katt']
Ordlistmetoder
values()
values() returnerar en lista över vilka värden som finns i ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> ordlista.values()['koira', 'misu']
Övriga ordlistmetoder
http://docs.python.org/lib/typesmapping.html
Ordlistor för menyer
Ordlistor är bra för att hantera menyer i program, t.ex.
O open file
P print file
Q quit
Make your choice:
Menyexempelmeny = {'H' : 'Skriv ut en hälsning',
'X': 'Avsluta' }
while True:
for val in meny:
print val + "\t" + meny[val]
svar = raw_input(‘\nVad vill du göra? ')
if svar == 'H' or svar == 'h':
print “\nHallå hallå hallå!\n"
elif svar == 'X' or svar == 'x':
print “\nDu vill alltså sluta. OK!"
break
Provkörning
H Skriv ut en hälsningX Avsluta
Vad vill du göra? h
Hallå hallå hallå!
H Skriv ut en hälsningX Avsluta
Vad vill du göra? r
H Skriv ut en hälsningX Avsluta
Vad vill du göra? x
Du vill alltså sluta. OK!
Ny modul: webbrowserhttp://docs.python.org/lib/module-webbrowser.html
>>> import webbrowser
>>> dir(webbrowser)['BackgroundBrowser', 'BaseBrowser', 'Elinks', 'Error', 'Galeon', 'GenericBrowser', 'Grail', 'Konqueror', 'Mozilla', 'Netscape', 'Opera', 'UnixBrowser', 'WindowsDefault', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_browsers', '_iscommand', '_isexecutable', '_synthesize', '_tryorder', 'browser', 'get', 'main', 'open', 'open_new', 'open_new_tab', 'os', 'register', 'register_X_browsers', 'shlex', 'stat', 'subprocess', 'sys', 'time']
Ny modul: webbrowser
De olika versionerna av funktionen open (open, open_new, open_new_tab) öppnar webbsidor i browsern
Webbadressen som argument
import webbrowserwebbrowser.open('http://www.abo.fi')
Webbrowserexempelimport webbrowser
sida = raw_input('Vilken sida vill du öppna? ')
webbrowser.open('http://' + sida)
Användaren behöver inte själv skriva in http://, utan det räcker med t.ex. www.abo.fi.
Programmet lägger automatiskt till http://
webboppnare.pyimport webbrowser
def skriv_meny(): print "Python på webben"
meny = {"A" : "http://www.python.org", "B" : "http://www.abo.fi/~linda.mannila/proggk07"} print
for i in meny.keys(): print "%s : %s" % (i, meny[i])
val = raw_input("Vilken sida vill du öppna? ") return meny[val]
def main(): sida = skriv_meny() webbrowser.open(sida)
main()
Filhantering
Hittills: All input via tangentbordet All output till skärmen
Nu filer Hämta data ur en fil Lagra data i en fil
Filer
För att kunna göra något med en fil måste man först öppna den för läsning för skrivning
Att läsa från en fil Öppna för läsning
infil = open(filnamn, ’r’)
Läs filens innehålldata = infil.read()
Läs en rad i tagetfor rad in infil: kod som gör något med raden
Att skriva till en fil Öppna för skrivning
utfil = open(filnamn, ’w’)
Skriv en sträng till filenutfil.write(sträng)
OBS! Om filen inte finns skapas den Om den finns skrivs allt gammalt innehåll över! För att skriva sist i en fil: använd ’a’ (append) i
stället för ’w’
Kom ihåg!
Att stänga filer Då man öppnar en fil (oberoende
av i vilket läge r/w/a) öppnar man kontakten till filen samtidigt låses filen så att inget
annat program kan komma åt det För att frigöra filen igen måste
man stänga kontakten Öppna: infil = open(filnamn, ’r’) Stäng: infil.close()
Gardera mot fel Fel att försöka öppna en fil som
inte finns IOError
Fel att försöka läsa från en fil som man redan läst allt ur EOFError
Oberoende av fel hantera dem try - except