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

Relevanta dokument
Sekvensdatatyper, ASCII och chiffer. Linda Mannila

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

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

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

TDP002 - Imperativ programmering

Introduktion till programmering SMD180. Föreläsning 8: Listor

Grundläggande datalogi - Övning 1

Datalogi för E Övning 3

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

TDDE44 Programmering, grundkurs

Föreläsning 18 Filer och avbildningar

Listor. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 7. Peter Dalenius Institutionen för datavetenskap

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

Övning 1 - Abstrakta datatyper

Ordlistor, filhantering och ut på webben. Linda Mannila

Hashtabeller! (& kanske lite sortering)

Grundläggande datalogi - Övning 4

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

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

Funktioner. Linda Mannila

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

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?

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

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

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

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

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

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

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

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

Övning 1. Abstrakta datatyper. 1. Stacken. class Stack: """A representation of a last-in-first-out (LIFO) stack of objects."""

Föreläsning 6 Programmeringsteknik och Matlab DD1312

Övning 6. Ali Tofigh 24 Oktober, 2006

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

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

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

Funktionell programmering DD1361

Tentamen i Introduktion till programmering

Föreläsning 13 Datalogi 1 DA2001

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 :

Selektion och iteration

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

729G04 Programmering och diskret matematik. Python 3: Loopar

TDP002 Imperativ programmering

Pythons standardbibliotek

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

Mer grafik. Jan Erik Moström

DD1314 Programmeringsteknik

Övning 0. Python för den som kan MATLAB. Lättare att läsa färdig kod än att skriva själv Det krävs övning för att automatiskt få detaljerna rätt:

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

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

Föreläsning 2 Programmeringsteknik och C DD1316

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

Introduktion till programmering SMD180. Föreläsning 7: Strängar

TDP002 - Imperativ programmering

Introduktion till programmering SMD180. Föreläsning 11: Filer och undantag

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

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

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.

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

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Omprov 11/11. på förmiddagen.

TDP002 - Imperativ programmering

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

Tenta i Grundläggande programmering DD klockan

Grundläggande datalogi - Övning 2

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

Klasser och objekt, referenser Grundkurs i programmering med Python

729G04 Programmering och diskret matematik

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

729G74 - IT och programmering, grundkurs. Dugga.

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

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

Övningsuppgifter kapitel 8

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

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

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

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

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

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

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

Föreläsning 3: Booleans, if, switch

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

Laboration: Whitebox- och blackboxtesting

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

Föreläsning Datastrukturer (DAT037)

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

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

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

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

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

PROGRAMMERINGSTEKNIK FÖRELÄSNING 5

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Transkript:

Python Mer om datatyper Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam! Datatyper Dictionaries - {1: camelot,2: shrubbery } Tupler - (1,2,3,) 1

Lite om strängar Strängar innehåller specialtecken Dessa vill man ofta ignorera Nyrad, tab Lite om strängar >>> a = """a... b... c""" >>> a 'a\nb\nc' >>> print a a b c >>> len(a) 5 Dessa räknas som blanktecken, "whitespace". Kan ställa till problem när man t.ex. vill räkna ordlängd el.dyl. 2

Lite om strängar >>> b = " lancelot " >>> b ' lancelot ' >>> newb = b.strip() >>> newb 'lancelot' strip() tar bort whitespaces i början och slutet av strängar alltså även \n och \t (och \r) Tupler Tupler är ungefär som listor, men immutable Detta ger en viss integritet Kan användas på ställen där listor inte kan användas Stödjer index, slice, konkatenering, for-inloopar... Har i princip inga metoder 3

Tupler en tom tupel: () treobjektstupel: (5,2,'hello') nästlad tupel: (2,5,('hello','polly'),8) tupel med 1 objekt: (1,) jämförelse: >>> 1==(1) True >>> 1==(1,) False Tupler >>> tup = (1,2,3,4) >>> tup[0] 1 >>> tup[1:-1] (2, 3) >>> 2 in tup True >>> 8 in tup False >>> for i in tup: print i*i 1 4 9 16 4

Tupler >>> tup+('hej') Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> tup+('hej') TypeError: can only concatenate tuple (not "str") to tuple >>> tup+('hej',) (1, 2, 3, 4, 'hej') >>> tup+tuple("hej") (1, 2, 3, 4, 'h', 'e', 'j') Tupler >>> tup[0] = 4 Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> tup[0] = 4 TypeError: 'tuple' object does not support item assignment 5

Tupler def separatecharacters(astring): vows=0 cons=0 vowels="aoueiy" for char in astring: if char in vowels: vows = vows + 1 else: cons = cons + 1 return (vows, cons) print separatecharacters("an african or a european swallow") Tupler är immutable >>> tup = (8,5,4,9,1) >>> temp = list(tup) >>> temp.sort() >>> tup=tuple(temp) >>> tup (1, 4, 5, 8, 9) 6

Extra info: nästlade index >>> L = [1,2,[1,2,3],4] >>> L[1] 2 >>> L[2] [1, 2, 3] >>> L[2][0] 1 >>> L[2][0]="SPAM!" >>> L [1, 2, ['SPAM!', 2, 3], 4] Extra info: nästlade index >>> s="red. no! blue!" >>> s[0] 'r' >>> s[0][0] 'r' >>> s[0][0][0] 'r' 7

Tupler Element i tupler är inte nödvändigtvis immutable: >>> tup = (1,2,[1,2,3],3) >>> tup[2] [1, 2, 3] >>> tup[2][1] = "SPAM!" >>> tup (1, 2, [1, 'SPAM!', 3], 3) Dictionaries Nyckel-värde-par Inte sekventiella, stödjer alltså inte index & slice Mutable 8

Dictionaries En variabel med dictionary: variable = {key:value, key:value...} Key måste vara immutable; tuple, sträng, tal Varje nyckel är unik Value kan vara vad som helst Value behöver inte vara unik Dictionaries Exempel på metoder (finns många): get(...) D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. has_key(...) D.has_key(k) -> True if D has a key k, else False items(...) D.items() -> list of D's (key, value) pairs, as 2- tuples keys(...) D.keys() -> list of D's keys pop(...) D.pop(k[,d]) -> v, remove specified key and return the corresponding value If key is not found, d is returned if given, otherwise KeyError is raised popitem(...) D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty values(...) D.values() -> list of D's values 9

Exempel: en ordbok Dictionaries >>> swenglish = {"buskage":"shrubbery", "sill":"herring", "svala":"swallow"} >>> swenglish["sill"] 'herring' Inte index, utan nyckel Litet exempel: Dictionaries >>> spamdict = {} >>> spamdict[2] = 'eggs' >>> spamdict[5] = 'tomato' >>> spamdict[1] = 'spam' >>> spamdict {1: 'spam', 2: 'eggs', 5: 'tomato'} >>> spamdict[5] = 'spam' >>> spamdict {1: 'spam', 2: 'eggs', 5: 'spam'} 10

Dictionaries >>> spamdict = {1:"spam",5:"tomato",2:"eggs",3:"spam"} >>> spamdict {1: 'spam', 2: 'eggs', 3: 'spam', 5: 'tomato'} >>> spamdict[2] 'eggs' >>> spamdict[2][0] 'e' >>> spamdict.keys() [1, 2, 3, 5] >>> 5 in spamdict True >>> spamdict.has_key(8) False Dictionaries >>> spamdict.values() ['spam', 'eggs', 'spam', 'tomato'] >>> spamdict[2] = "sausage" >>> spamdict {1: 'spam', 2: 'sausage', 3: 'spam', 5: 'tomato'} >>> spamdict[8] = 'viking' >>> spamdict {1: 'spam', 2: 'sausage', 3: 'spam', 8: 'viking, 5: 'tomato'} >>> spamdict = {1:"spam",5:"tomato",2:"eggs",3:"spam", 1:"eggs"} >>> spamdict {1: 'eggs', 2: 'eggs', 3: 'spam', 5: 'tomato'} 11

Dictionaries spamdict = {1:"spam",5:"tomato",8:"eggs",3:"spam"} for key in spamdict.keys(): print "Key:",key,"Value:",spamDict[key] Key: 8 Value: spam Key: 2 Value: eggs Key: 3 Value: spam Key: 5 Value: tomato Dictionaries Man kan inte sortera en dictionary Man vill ofta presentera innehållet på ett sorterat sätt En lösning: Skapa en lista av nycklarna, sortera den, presentera detta 12

Dictionaries spamdict = {1:"spam",5:"tomato",8:"eggs",3:"spam"} keylist = spamdict.keys() keylist.sort() for key in keylist: print "Key: ", key, "Value: ", spamdict[key] Ett vanligt problem >>> spamdict = {1: 'viking', 2: 'eggs', 3: 'spam', 5: 'tomato'} >>> spamdict[2] 'eggs' >>> spamdict[9] Traceback (most recent call last): File "<pyshell#94>", line 1, in <module> spamdict[9] KeyError: 9 13

Ett vanligt problem Man kan tänka sig en dictionary när man ska hålla räkningen på något, som en tabell Sedan tänker man sig en funktion som sköter uppdateringen av dictionaryn Man vill undvika KeyError Kod resultdict = {} def incdict(key): if incdict.has_key(key): resultdict[key] = resultdict[key] + 1 else: resultdict[key] = 1 14

En vanlig lösning get(...) D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. alltså: resultdict = {} def incdict(key): resultdict[key] = resultdict.get(key, 0) + 1 15