Ordlistor, filhantering och ut på webben

Preview:

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