Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007



Relevanta dokument
Planering av ett större program, del 2 - for och listor. Linda Mannila

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

729G04 Programmering och diskret matematik. Föreläsning 7

Funktioner. Linda Mannila

Föreläsning 18 Filer och avbildningar

Språket Python - Del 2 Grundkurs i programmering med Python

Laboration: Whitebox- och blackboxtesting

729G04 Programmering och diskret matematik

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Tentamen i Introduktion till programmering

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

TDDE44 Programmering, grundkurs

729G04 Programmering och diskret matematik

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Föreläsning 6 Programmeringsteknik och Matlab DD1312

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Datalogi, grundkurs 1

DD1314 Programmeringsteknik

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Några saker till och lite om snabbare sortering

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

Föreläsning 5 Mer om funktioner, villkor

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Uppgifter teknik HT17 (uppdaterad v. 40)

Grundläggande datalogi - Övning 1

Att skriva till och läsa från terminalfönstret

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

PROGRAMMERINGSTEKNIK FÖRELÄSNING 5

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

Föreläsnings 9 - Exceptions, I/O

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Övning 6. Ali Tofigh 24 Oktober, 2006

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 13 Datalogi 1 DA2001

Sekvensdatatyper, ASCII och chiffer. Linda Mannila

Övning 1 - Abstrakta datatyper

Pythons standardbibliotek

Den klassiska programmodellen. Introduktion till programmering D0009E. Föreläsning 11: Filer och undantag. Filsystem. Interaktiva program.

Text och strängindexerade fält Grundkurs i programmering med Python

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Besiktningsprotokollet

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Programmeringsteknik med C och Matlab

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

TDP002 - Imperativ programmering

Namn Stil Dokumentation Objekt-orienterad programmering OBS OBS OBS OBS OBS OBS OBS OBS

v. 42 Python HT17 En introduktion Oscar Bergqvist

kl Tentaupplägg

Datalogi för E Övning 3

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Övningsuppgifter kapitel 8

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik. Python 3: Loopar

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

729G04 PYTHON 6 JODY FOO. Department of Computer and Information Science (IDA) Linköping University, Sweden

Python Första steg. LGMA20, L9MA20 VT 2019 Jonathan Nilsson, Laura Fainsilber

TDP002 - Imperativ programmering

Lektion 2: Sökagenter. Robin Keskisärkkä

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Föreläsning 7: Filer

Erfarenheter från labben

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

Enkla datatyper minne

Hur man programmerar. Exempel på problemlösning i Python

C++ Slumptalsfunktioner + switch-satsen

Labbrapport Svantes Bageri

Skapa hashtabell. En hashtabell kan ses som en lista där programmeraren associerar egna nycklar (index) till varje element som ska läggas i tabellen :

Planering Programmering grundkurs HI1024 HT TIDAA

Transkript:

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 Ny datatyp ordlistan (dictionary) Modulen webbrowser Filhantering

Ordlistor (dictionaries) Samlingsdatatyp Nyckel-värde -par Påminner om en vanlig ordbok katt hund ko kissa koira 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 } Nyckel Vä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'}

Funktioner på ordlistor Antalet par i en ordlista: len Funktionen len berättar hur många nyckel-värde-par som finns i ordlistan >>> ordlista {'hund': 'koira', 'katt': 'misu'} >>> len(ordlista) 2

Exempel Provkörning: Svenska Engelska ------------------ blå blue gul yellow sve_eng = {'röd' : 'red', grön green 'blå' : 'blue', röd red 'grön': 'green', 'gul' : 'yellow'} print "%-9s %-9s" % ("Svenska", "Engelska") print "------------------" for ord in sve_eng: print "%-9s %-9s" % (ord, sve_eng [ord])

Ordlistmetoder keys() keys() returnerar en lista över vilkanycklar som finns i ordlistan >>> ordlista {'hund': 'koira', 'katt': 'misu'} >>> ordlista.keys() ['hund', 'katt']

Ordlistmetoder values() values() returnerar en lista över vilkavä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:

Menyexempel meny = {'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älsning X Avsluta Vad vill du göra? h Hallå hallå hallå! H Skriv ut en hälsning X Avsluta Vad vill du göra? r H Skriv ut en hälsning X Avsluta Vad vill du göra? x Du vill alltså sluta. OK!

Ny modul: webbrowser http://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 import webbrowser webbrowser.open('http://www.abo.fi') Webbadressen som argument

Webbrowserexempel import 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.py import 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åll data = infil.read() Läs en rad i taget for 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 filen utfil.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