Sekvensdatatyper, ASCII och chiffer. Linda Mannila

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

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

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

Funktioner. Linda Mannila

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

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

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

Datalogi för E Övning 3

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

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

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

Övningsuppgifter kapitel 8

Ordlistor, filhantering och ut på webben. Linda Mannila

729G04 Programmering och diskret matematik. Python 3: Loopar

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

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

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

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

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Grundläggande datalogi - Övning 1

Övning 1 - Abstrakta datatyper

Föreläsning 13 Testning och strängar

Pythons standardbibliotek

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

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

TDP002 Imperativ programmering

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

TDP002 - Imperativ programmering

TDDE44 Programmering, grundkurs

Ö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:

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

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

TDP002 - Imperativ programmering

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Länkade strukturer. (del 2)

Föreläsning 18 Filer och avbildningar

TDDC77 Objektorienterad Programmering

Selektion och iteration

Datalogi, grundkurs 1

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

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

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

Länkade listor, stackar och köer

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

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

TDP002 - Imperativ programmering

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

Tentamen i Introduktion till programmering

Rekursiva algoritmer sortering sökning mönstermatchning

Mer grafik. Jan Erik Moström

Tentamen OOP

Tecken & Strängar. Kapitel 7

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

Föreläsning 6: Introduktion av listor

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

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

Använda Python Laboration 1 GruDat, DD1344

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Men först: Några funktioner ur preluden. Introduktion till programmering. Uppgiften. Variationer av uppgiften. Föreläsning 4

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Erfarenheter från labben

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

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

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

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

DAT043 - föreläsning 8

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

Övning 6. Ali Tofigh 24 Oktober, 2006

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

Klasser och objekt, referenser Grundkurs i programmering med Python

Omprov 11/11. på förmiddagen.

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

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Tutorial: Python på 90 minuter

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

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

Grundläggande databehandling ht 2005

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Föreläsning 6: Metoder och fält (arrays)

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Den som bara har en hammare tror att alla problem är spikar

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...

Några saker till och lite om snabbare sortering

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

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

TDP002 - Imperativ programmering

Transkript:

Sekvensdatatyper, ASCII och chiffer Linda Mannila 1.11.2007

Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen if Looparna for och while

Denna föreläsning Mer om sekvensdatatyper Strängar Listor Tupler

Tre sekvensdatatyper Strängar en sträng, en sträng en riktigt, riktigt, riktigt, riktigt rejält lång sträng Listor [1,2,3] [ Januari, Februari, Mars,..., December ] [ [1,2], [2,3], [3,4] ] # Nästlad lista! Tupler (nytt!) (1,2,3) ( Januari, Februari, Mars,..., December )

Tupler Ungefär som listor (ser snart skilnaden) Tom tupel: () Tupel med tre element: (5,2,'hello') Nästlad tupel: (2,5,('hello','polly'),8) Tupel med ett element: (1,) >>> tup = (1,2,3,4) >>> for x in tup: print x*2 >>> 2 >>> 4 >>> 6 >>> 8

Vadå sekvens? Kan indexeras Framifrån (första index 0) Bakifrån (första index -1) >>> my_string = 'Python' >>> my_list = [51, 26, [36,2], 4] >>> my_tuple = (1,5,2,3,6) >>> >>> my_string[1] 'y' >>> my_list[3] 4 >>> my_list[2,1] 2 >>> my_tuple[4] 6 >>> my_string[-1] # Index bakifrån börjar från -1 n

Immutability Strängar och tupler är immutable Oföränderliga Kan inte ändras då de en gång har skapats För ändringar skapa ny sträng/tupel Listor är mutable Föränderliga Kan ändras in-place, dvs. man kan byta ut, ta bort eller lägga till element utan att skapa en ny lista

Uppdateringar >>> my_string = 'Python' >>> my_list = [51, 26, 36, 4] >>> my_tuple = (1,5,2,3,6) >>> my_string[2] = 'q' Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> my_string[2] = 'q' TypeError: 'str' object does not support item assignment >>> my_tuple[1] = 3 Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> my_tuple[1] = 3 TypeError: 'tuple' object does not support item assignment >>> my_list[2] = 4 >>> my_list [51, 26, 4, 4]

Konsekvenser my_string = Python Python my_string my_string = Java Python Java Ny sträng! my_string

Objekt och identitet Allt i Python är objekt med en egen unik identitet >>> a = "banana" >>> b = "banana" >>> id(a) 18975168 >>> id(b) 18975168 >>> a = [1,2,3] >>> b = [1,2,3] >>> id(a) 18990944 >>> id(b) 19001432

Slicing Skär ut en del ur en sekvens skapar en ny sekvens sekvens[ start : stop ] >>> s = "Python" >>> t = (1,2,3) >>> l = [5,2,5,21] >>> s[1:2] # Slice från index 1 upp till 2 (2 inte med) 'y' >>> t[0:2] (1, 2) >>> l[2:4] [5, 21] >>> s[1:] # Bortlämnat index går till änden av sekvensen 'ython' >>> l[:3] # Bortlämnat index går till början av sekvensen [5, 2, 5]

Strängformattering Pythons %-operator formatterar strängar Vänstra sidan: formatsträng som anger hur strängen skall se ut Högra sidan: de värden som skall formatteras Ett värde som det är Fler värden innanför parentes >>> print Jag heter %s % Bo Jag heter Bo >>> print Jag är %d år % 59 Jag är 59 år %s sätt in en sträng här %d sätt in ett heltal här

Strängformattering >>> "Månad: %s År: %d" % ("November", 2007) 'Månad: November År: 2007' >>> "%04d" % 13 # 0 fyll på med nollor '0013 # 4 minst fyra teckens vidd >>> "%6.4f%%" % 37.2 # f flyttal '37.2000% # 6.4 minst sex tecken, 4 decimaler >>> "[%-4d]" % 13 # -4 fyll ut bakifrån med blank- '[13 ] # tecken till fyra teckens vidd

Strängformattering Format Beskrivning Exempel Resultat d Heltal %d %d % (13, 15) 13 15 o Tal i basen 8 %o %o % (13, 15) 15 17 x Tal i basen 16 %x %x % (13, 15) d f X Tal i basen 16 %X %X % (13, 15) D F e Flyttal (exp) %e % 123.45 1.234500e +02 E Flyttal (exp) %E % 123.45 1.234500e +02 f Flyttal %f % 123.45 123.450000 s Sträng %s %s % ( a, b ) A B

Metoder Metod = en funktion som hör ihop med en viss typ av objekt Då allt i Python är objekt Metoder för i princip allt Undantag: tal Mer om att skapa egna objekt och metoder i fortsättningskursen

Strängmetoder >>> s = "" >>> dir(s) [' add ', ' class ', ' contains ', ' delattr ', ' doc ', ' eq ', ' ge ', ' getattribute ', ' getitem ', ' getnewargs ', ' getslice ', ' gt ', ' hash ', ' init ', ' le ', ' len ', ' lt ', ' mod ', ' mul ', ' ne ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' rmod ', ' rmul ', ' setattr ', ' str ', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

Strängmetoder (några ex) Metod capitalize lower upper strip lstrip rstrip count find replace Exempel text.capitalize() abcd.lower() abcd.upper() a b.strip() a b.lstrip() a b.rstrip() abracadacra.count( ra ) abracadabra.find( ra ) abracadabra.find( xzy ) abracadabra.replace( ra, - ) Resultat Text abcd ABCD a b a b a b 2 2-1 ab-cadab-

Operationer på listor Konkatenering Fungerar på samma sätt för alla sekvensdatatyper (även för strängar och tupler) [1,2,3] + [4,5,6] [1,2,3,4,5,6] del Raderar ett element/en slice Modifierar samma lista skapar inte en ny >>> min_lista = [1,2,3,4,5,6,7,8] >>> del(min_lista[4]) >>> min_lista [1, 2, 3, 4, 6, 7, 8] >>> del(min_lista[3:5]) >>> min_lista [1, 2, 3, 7, 8]

Listmetoder >>> lista = [] >>> dir(lista) [' add ', ' class ', ' contains ', ' delattr ', ' delitem ', ' delslice ', ' doc ', ' eq ', ' ge ', ' getattribute ', ' getitem ', ' getslice ', ' gt ', ' hash ', ' iadd ', ' imul ', ' init ', ' iter ', ' le ', ' len ', ' lt ', ' mul ', ' ne ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' reversed ', ' rmul ', ' setattr ', ' setitem ', ' setslice ', ' str ', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Listmetoder metaller = [ guld, järn, bly, guld ] Metod append count Exempel metaller.append( tenn ) metaller.count( guld ) Resultat [ guld, järn, bly, guld, tenn ] 2 index insert remove metaller.index( järn ) metaller.index( syre ) metaller.insert(2, silver ) metaller.remove( guld ) 1 ValueError: syre not in the list [ guld, järn, silver, bly, guld ] [ järn, bly, guld ] reverse sort metaller.reverse() metaller.sort() [ guld, bly, järn, guld ] [ guld, guld, järn, bly ]

Nästlade listor och tupler Nästlade listor >>> listan = [1,2,[1,2,3],4] >>> listan[1] 2 >>> listan[2] [1, 2, 3] >>> listan[2][0] 1 >>> listan[2][0]="spam!" >>> listan [1, 2, ['SPAM!', 2, 3], 4] Tupler är immutable, dvs. kan inte ändras, men dess element kan vara mutable (t.ex. en lista): >>> tup = (1,2,[1,2,3],3) >>> tup[2] [1, 2, 3] >>> tup[2][1] = "SPAM! # Uppdaterar listan, inte själva tupeln >>> tup (1, 2, [1, 'SPAM!', 3], 3)