Föreläsning 18 Filer och avbildningar



Relevanta dokument
Föreläsning 13 Testning och strängar

Ordlistor, filhantering och ut på webben. Linda Mannila

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

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

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

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

TDDE44 Programmering, grundkurs

Föreläsning 6 Programmeringsteknik och Matlab DD1312

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

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

Objektorienterad programmering

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Föreläsning 13 Datalogi 1 DA2001

Föreläsning 5 Mer om funktioner, villkor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

TDP002 - Imperativ programmering

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

Föreläsning 8. Mängd, Avbildning, Hashtabell

Programmering för språkteknologer II, HT2014. Rum

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

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

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

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

729G74 - IT och programmering, grundkurs. Dugga.

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

Användarhandledning Version 1.2

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

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

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 :

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Föreläsning 8. Mängd, Avbildning, Hashtabell

Övningsuppgifter kapitel 8

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Objektorienterad programmering i Java I

Programmeringsteknik med C och Matlab

Hashtabeller! (& kanske lite sortering)

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Tentamen i Introduktion till programmering

Arrayer (fält)

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

729G04 Programmering och diskret matematik. Python 3: Loopar

729G04 Programmering och diskret matematik

TDDC77 Objektorienterad Programmering

Datastrukturer. föreläsning 6. Maps 1

Övning 6. Ali Tofigh 24 Oktober, 2006

Hashing Bakom kulisserna på Pythons dictionary

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Erfarenheter från labben

Programmering för språkteknologer II, HT2011. Rum

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

DD1311 Programmeringsteknik för CL1 Laborationer läsåret

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

729G04 Programmering och diskret matematik

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDC77 Objektorienterad Programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Frekvenstabell över tärningskast med C#

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Dagens föreläsning Programmering i Lisp Fö 5

TDDC74 Lab 02 Listor, sammansatta strukturer

Tilpro Övning 1. Per-Anders Staav (föredrar att kallas Pa) Kan nås via epost: (fast de flesta frågor besvaras nog bäst av Alexander)

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

Hashing Bakom kulisserna på Pythons dictionary

Hashing Bakom kulisserna på Pythons dictionary. Leta i listor Osorterade listor. Leta i listor Sorterade listor

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDP002 - Imperativ programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Objektorienterad Programkonstruktion

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Magnus Nielsen, IDA, Linköpings universitet

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Programkonstruktion och. Datastrukturer

Tentamen TEN1 HI

PHP. Dynamiska webbsidor

Planering Programmering grundkurs HI1024 HT 2014

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Sekvensdatatyper, ASCII och chiffer. Linda Mannila

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Transkript:

Föreläsning 18 Filer och avbildningar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.11.2011

Avbildningar Hur skulle du göra en: Ordlista Man ger ett engelskt ord och får det svenska. Adressbok Med personens namn får du kontaktuppgifterna. Uppslagsverk Med sökord får du informationen om saker. Studentregister Med studentnummer får man ett studentobjekt. En lista eller mängd skulle duga. Det tar tid att hitta i en lista utan att gå igenom allting. Det är extra arbete att koppla ihop en sak med en annan. Föreläsning 18 Filer och avbildningar 2/18

Avbildningar Lösning En avbildning (eng. map, associative array eller dictionary) kan användas i detta sammanhang. dict-klassen som är inbyggd i Python ger avbildningar. Avbildningens värden är alla kopplade till nyckelvärden ( sökord ). Nyckelvärdena kan vara godtyckliga objekt så länge de: Är oföränderliga. Har en hash ()-metod konsistent med ekvivalensrelationen som används. I praktiken används oftast strängar och heltal. Föreläsning 18 Filer och avbildningar 3/18

Avbildningar Lösning En lista kan ses som en avbildning från heltal till värden. Nyckelvärdena är en mängd (samma nyckel kan inte användas två gånger i en avbildning). Nya värden för en nyckel ersätter de tidigare. Syntaxen för att läsa, skriva och ta bort värden är densamma som för listor, men: Skriver man ett värde för en nyckel som inte finns läggs ett nytt nyckel/värde-par till i avbildningen. Avbildningar kan skrivas inom klammerparentes med komma mellan paren och kolon mellan nyckel och värde. Föreläsning 18 Filer och avbildningar 4/18

Avbildningar Exempel Engelska ord som nycklar, svenska som värden. ordbok = {"cat": "katt", "dog": "valp"} # Skapa ordbok["cow"] = "ko" # Tillsätt ordbok["dog"] = "hund" # Ändra print ordbok["dog"] # Hämta print "dog" in ordbok # Finns nyckeln? Föreläsning 18 Filer och avbildningar 5/18

Avbildningar Exempel tom1 = {} # Ny tom avbildning tom2 = dict() # Ny tom avbildning kopia1 = dict(ordbok) # Kopiera avbildning kopia2 = ordbok.copy() # Kopiera avbildning del ordbok["cow"] # Borttagning print len(kopia1) # Längd Föreläsning 18 Filer och avbildningar 6/18

Avbildningar Metoder för omvandling till listor items() Hämta en lista över tupler med nyckel och värde. keys() Hämta en lista över nycklar. values() Hämta en lista över värden. Notera att ordningen på listorna kan ändras om man ändrar på avbildningen; kombinera inte listor från olika versioner av avbildningen! Föreläsning 18 Filer och avbildningar 7/18

Avbildningar Metoder för att ta bort pop(key) Ta bort värdet med nyckeln key och returnera det. Kasta KeyError om den inte finns. pop(key, default) Ta bort värdet med nyckeln key och returnera det om det finns, annars returnera default. popitem() Ta bort ett godtyckligt värde och returnera nyckel/värde-paret. Kasta KeyError om avbildningen är tom. clear() Töm avbildningen. Föreläsning 18 Filer och avbildningar 8/18

Avbildningar Uppdateringsmetod update(new) Ersätt eller lägg till element från new i avbildningen. new kan vara en avbildning eller vad som helst som går att iterera över (t.ex. en lista) med nyckel/värde-par (t.ex. listor med 2 element). Notera att ordningen på listorna kan ändras om man ändrar på avbildningen; kombinera inte listor från olika versioner av avbildningen! Föreläsning 18 Filer och avbildningar 9/18

Filer Vad? Generellt är en fil en sekvens data med ett namn placerad i en katalog (mapp). I de flesta fall är filers innehåll en lista oktetter. Ofta delas filer in i textfiler (där oktetterna kan tolkas som text genom en teckenkodning) och binärfiler (allt annat). Textfiler är lättare att undersöka och jobba med, så vi koncentrerar oss på dem i denna kurs. Det är inte svårt att lära sig använda binärfiler senare. Föreläsning 18 Filer och avbildningar 10/18

Filer Öppna filer Först måste man öppna en fil med open()-metoden, som returnerar ett filobjekt. Första argumentet är filens namn som en sträng. Det andra argumentet är läget som filen öppnas i, en sträng som anger hur filen ska öppnas ( r om bortlämnat): r Läsning (filen måste finnas) w Skrivning (ersätts om finns) a Lägg till i slutet av filen + efter en av ovannämnda Uppdatering (både läs/skriv) b tillsatt binärläge Föreläsning 18 Filer och avbildningar 11/18

Filer Läs filer Filobjekt har metoderna: readline() Läs en rad från filen och returnera som sträng (med radbytet i slutet). readlines() Läs hela resten av filen och returnera raderna som en lista av strängar (med radbyte i slutet på varje). read() Läs hela resten av filen och returnera som sträng. read(bytes) Läs resten av filen upp till bytes oktetter och returnera som sträng. Föreläsning 18 Filer och avbildningar 12/18

Filer Skriv filer Filobjekt har metoderna: write(text) Skriv text till filen. writelines(lines) Skriv listan av strängar lines till filen. Vill du ha radbyten måste du själv sätta dem i lines. Stäng filer Stäng filen med close()-metoden när du är klar! Föreläsning 18 Filer och avbildningar 13/18

Filer Exempel animals.py läser en textfil med ord och sätter in varje ord i en lista. average_temperature.py läser en fil med tal och räknar medeltalet och skriver det i en fil. average_temperatures.py läser filer med tal och räknar medeltalen och skriver dem i en fil. Föreläsning 18 Filer och avbildningar 14/18

Filer Exempel word_count.py räknar mängden ord i en fil. Orden sorteras enligt förekomst och lagras i en annan fil. Först tar den bort skiljetecken och radbyten. Orden som finns kvar spjälks fram med att bryta vid mellanslag och omvandlas till små bokstäver. En avbildning används för att hålla reda på hur många gånger ett ord påträffats. Sortering enligt värdet i avbildningen. Föreläsning 18 Filer och avbildningar 15/18

Knep med slingor break och continue break-satsen avbryter den (innersta) pågående for- eller while-slingan. Den används t.ex. för att avbryta en sökning i en lista. continue-satsen hoppar till nästa varv i den (innersta) pågående for- eller while-slingan. Den används t.ex. för att hoppa över ett element i en lista. Båda kan ersättas med t.ex. if-satser och ändringar av slingans villkor. Föreläsning 18 Filer och avbildningar 16/18

Knep med slingor for med filer for-slingor kan använda textfiler (i läsläge) som om de vore listor. Slingans variabel kommer att få raderna i textfilen som värde. Det här är ett kortfattat sätt att behandla alla rader i en fil. Se t.ex. word_count.py för exempel. Föreläsning 18 Filer och avbildningar 17/18

Slut Nästa föreläsning 24.11.2011 14:15 16:00 i Maari-C Dokumentation, tupler och mängder Kom ihåg Rond 9 deadline 22.11. Föreläsning 18 Filer och avbildningar 18/18