Tutorial: Python på 90 minuter

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

TDP002 - Imperativ programmering

TDP002 Imperativ programmering

TDP002 - Imperativ programmering

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

Grundläggande datalogi - Övning 1

TDP002 - Imperativ programmering

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.

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

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?

729G04 Programmering och diskret matematik. Python 3: Loopar

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

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

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

Ordlistor, filhantering och ut på webben. Linda Mannila

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

DD1314 Programmeringsteknik

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

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

Grundläggande databehandling ht 2005

Selektion och iteration

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

Funktioner. Linda Mannila

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

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Grundläggande Datalogi

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

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

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

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

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

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

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Pythons standardbibliotek

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

Använda Python Laboration 1 GruDat, DD1344

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

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

Repetition C-programmering

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

Introduktion C-programmering

Användarhandledning Version 1.2

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

Laboration: Whitebox- och blackboxtesting

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

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

Datalogi för E Övning 3

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

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

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Övning 6. Ali Tofigh 24 Oktober, 2006

TDDE44 Programmering, grundkurs

Skillnader mellan Python och Java

Principer för (imperativa) programmeringsspråk

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

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

Erfarenheter från labben

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

Programmering grundkurs

Omprov 11/11. på förmiddagen.

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

Imperativ programmering. Föreläsning 2

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

Variabler och konstanter

Sätt att skriva ut binärträd

Grundläggande datalogi - Övning 4

TDIU01 - Programmering i C++, grundkurs

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

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

TDDE44 Programmering, grundkurs

Uppgifter teknik HT17 (uppdaterad v. 40)

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

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

Föreläsning 6: Introduktion av listor

Föreläsning 5 Mer om funktioner, villkor

DD1361 Programmeringsparadigm. Carina Edlund

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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

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

TDP002 - Imperativ programmering

Problemlösning och algoritmer

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

Föreläsning 3-4 Innehåll

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

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.

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

Översikt 5 delar. 1: Fysisk representation. Binär, oktal och hexadecimal representation

Objektorienterad programmering i Java

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

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

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

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Sekvensdatatyper, ASCII och chiffer. Linda Mannila

Datalogi, grundkurs 1

Beräkningsvetenskap föreläsning 2

Programmeringsteknik I

Transkript:

Tutorial: Python på 90 minuter Human Centered Systems Inst. för datavetenskap Linköpings universitet

Läsöversikt LP Part I Part IV, kap 18 PL: kap 1, 2 (Sem 1), 3 (Sem 3), 5.1-5.3, 5.8 intro, 6.1-6.3, 7.1-7.3, 8.1-8.3, 9.1-9.2 Wikipedia kan användas som stöd för PL-avsnitten.

Föreläsningar 2-6 Föreläsning 2: översikt över Python Föreläsning 3: algoritmer och imperativt tänkande Föreläsning 4: Datastrukturer, procedurell och dataabstraktion Föreläsning 5: Principer för programmeringsspråk Föreläsning 6: Inför tentamen

Genomförande av laborationer Arbetar parvis Läs igenom laborationer i förväg börja läsa laboration 1 nu... Verktygslaborationer viktiga, om än lite kryptiska... Schema Må morgon är dojo/seminarium

Översikt (LP kap 3, 4, 10, 15) Python genom en serie exempel ( snippets ) Tutorial snabbt igång med ny teknik/ nytt språk Kopiera källkod ett bra första steg Kom igång snabbt med labbar och projekt OBS: man behöver inte fatta alla detaljer på en gång!

Konceptuell struktur (jmf. PL-boken) LP Part II: Types and Operations LP Part III: Statements and Syntax PL: kap 6 Data types PL: kap 7 Expressions and Assignment Statements PL: kap 8 Statement-Level Control Structures LP Part IV: Functions PL: kap 9 Subprograms

Ex 0: Moduler: import/reload (Kap 3) >>> import os >>> help("os")...man-sida >>> reload(os) Python Standard Library Utvidgar Python-språket med bra-att-ha kommandon/funktioner http://docs.python.org/ Källkod: /usr/lib/python import laddar en modul help interaktiv hjälp (jmf man) reload laddar om en modul (bra vid utveckling, se även C-c C-c I Emacs)

Typer och operationer

Tal >>> 20 + 22 42 >>> 1 + 2 + 3 + 5 + 7 + 11 + 13 42 >>> 3 * 4 12 >>> 3 / 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero >>> 44-13.3 30.699999999999999 >>> max(3,7) 7 >>> round(7.5) 8.0 >>> import math >>> math.pi 3.1415926535897931 Inbyggda (built-in) icke-muterbara (immutable) Matematiska beräkningar

Strängar >>> str = 'hej' >>> len(str) 3 >>> str[1] 'e' >>> str[1:3] 'ej' >>> str[-2] 'e' >>> str + str 'hejhej' >>> str * 5 'hejhejhejhejhej' >>> str.split('e') ['h', 'j'] Inbyggda (built-in) Sekvenstyp icke-muterbara (immutable) metoder med strängspecifika operationer

Listor >>> mylist = ['a', 'b', 'c'] >>> mylist[1] 'b' >>> mylist[1:3] ['b', 'c'] >>> mylist[0] = 'A' >>> del mylist[1] >>> mylist ['A', 'c'] >>> mylist.append('x') >>> mylist ['A', 'c', 'x'] >>> mylist2 = [7,3,6] >>> mylist2.sort() >>> mylist2 [3, 6, 7] listor är sekvenser av objekt - dynamiska arrayer muterbara både storlek och värden Elementen kan vara vilket typ av objekt som helst Listor kan blanda typer av objekt Metoder ger specifika operationer för listor

Dictionary words = {'gul': 'yellow', 'vit': 'white' } >>> words['gul'] 'yellow' >>> 'gul' in words True >>> words['gul'] = 'Yellow' >>> words.values() ['white', 'Yellow'] Hashtabell/map Lagrar nyckel-värde associationer nycklarna är ickemuterbara objekt Metoder för typspecika operationer

Tupler >>> ('a', 'b', 'c') ('a', 'b', 'c') >>> tuple = ('a', ('b', 'c')) >>> tuple[1] ('b', 'c') >>> ('a', 'b', 'c') + ('d', 'e') ('a', 'b', 'c', 'd', 'e') Tupler är sekvenser av objekt de är icke-muterbara Längden är fixerad Elementvärdena är fixerade

Filer >>> myfile = open("test.txt", "w") >>> myfile.write("rad 1 - test \n") >>> myfile.write("rad 2 - test igen \n") >>> myfile.close() Filen writetest.py: #!/usr/bin/env python myfile = open("test.txt", "w") myfile.write("rad 1 - test \n") myfile.write("rad 2 - test igen \n") myfile.close() larde@~:more test.txt Rad 1 - test Rad 2 - test igen Datafiler är objekt i språket Metoder ger operationer Plus open Och kom ihåg att... Program = fil = modul Kommando = sats Moduler har sideffekter

Satser och syntax

Pythons programstruktur 1. Program består av moduler 2. Moduler består av satser 3. Satser innehåller uttryck 4. Uttryck skapar och beräknar objekt Här

Tilldelningssatsen sum = 1.0 + 2.0 + 3.0 prod = 4.0 * 5.0 div = sum * sum / prod print div sum = 'Aha en sträng' print sum print div 1.8 Aha en sträng 1.8 Uttryck är det som räknar ut något i språket Jmf. matematiska uttryck Även struktur-uttryck t ex strängar. listor Variabler för att mellanspara värden = tilldela uttryck till variabel

Villkorssatsen import random comp_die = random.randint(1,6) user_die = random.randint(1,6) if comp_die > user_die: print "Datorn vann!" elif comp_die < user_die: print "Du vann!" e l s e: print "Oavgjort!" if-satsen om sant gör så elif annars om gör så else annars gör så elif, else är optionella man kan ha flera elif O B S kolon och indentering nödvändig

for-loopen number_list = range(7) print number_list print 'For-loop:' for x in number_list: print x, print "\n" [0, 1, 2, 3, 4, 5, 6] For-loop: 0 1 2 3 4 5 6 For (each): för varje element gör något For-loopen är bra för förutbestämda loopar Eng Definite iterations Loop = iteration O B S kolon och indentering nödvändig

while-loopen print 'While-loop:' i = 0 while number_list[i] ** 2 < 15: print number_list[i], i += 1 print '\n' While-loop: 0 1 2 3 while (condition): så länge villkoret är sant gör något Bra för obestämda loopar Eng indefinite iterations O B S kolon och indentering nödvändig

Funktioner

def-satsen def print_hello(): print 'Hej', def hello_twice(): print_hello() print_hello() Funktioner är subprogram defineras och anropas Paketering av källkod under visst namn Indentering avgör när defintionen slutar OBS: inget händer när detta körs förutom att print_hello blir defnerad som en funktion...

Anrop av funktioner def print_hello(): print 'Hej', def hello_twice(): print_hello() print_hello() Anrop kan ske från modulnivå Funktioner kan anropa andra funktioner print_hello() print hello_twice() Hej Hej Hej

Parametrar, returvärden och lokala variabler def add_values(val1, val2): sum = val1 + val2 return sum mysum = add_values(7,9) print mysum 16 Funktioner kan ha indata i form av parametrar De värden som binds till parametrarna i ett anrop kallas argument Parametrar och variabler i en funktion är lokala för funktionen Kan bara refereras inom funktionen

Räckvidd och skuggning size = 45 def print_my_size(size): return size def print_global_size(): global size return size Variabler/parametrar har räckvidd (scope) Parametrar och lokala variabler skuggar globala variabler print print_my_size(22) print print_global_size() 22 45

Moduler

Egna moduler file_handler.py: _db_file = open('my-database.txt') _db_list = _db_file.readlines() _db_file.close() def no_items(): return len(_db_list) def get_item(index): return _db_list[index] present_results.py: Delar upp större program i flera filer Konceptuell klarhet Återanvändning import file_handler def main(): i = 0 while i < file_handler.no_items(): print file_handler.get_item(i) i = i + 1 main()

Några större exempel (i mån av tid...)

Ex: Manipulera filer import os t = os.path.abspath('.') print 'abspath:', t print 'basename:', os.path.basename(t) cwd = os.getcwd() print 'cwd:' + cwd print 'listdir:', os.listdir(cwd) print 'is dir:', os.path.isdir('filedir.py') os-modulen - interaktion med fil/kataloger/skal För automatisk hantering/ bearbetning av filer abspath: /home/larde/svndoc/courses/tdp002/py-2 basename: py-2 cwd:/home/larde/svndoc/courses/tdp002/py-2 listdir: ['.svn', 'storedata_2.py', 'sumprod.py', 'config.py',...] stat: (33188, 5478488L, 2053L, 1...) is dir: False

Ex: Kommandorad och os.system pdf_html.py: ett skript för att generera pdf och html-filer import os import sys argument 1 ps2pdf_call = 'ps2pdf %(name)s-4.ps %(name)s-4.pdf' % {"name" : sys.argv[1]} os.system(ps2pdf_call) tar_call = 'tar zcvf %(name)s-html.tgz %(name)s-html' % {"name" : sys.argv[1]} os.system(tar_call) scp_call = 'scp %s* remote.ida.liu.se:%s' % (sys.argv[1], sys.argv[2]) os.system(scp_call) argument 2 Anrop: pdf_html.py lecture-1 ~TDP002/www-pub/lectures

(Lite) större exempel: store_data Initial pseudokod: WHILE användaren vill: läs in ny data spara data på fil Frågor: 1) vilken fil? 2) hur avsluta? Förfining: Öppna filen data.txt WHILE användaren vill: läs in ny data IF NOT \q: spara data på fil Stäng filen %:./storedata_1.py Enter data ('\q' to quit): Kom ihåg: X Enter data ('\q' to quit): Händelse Y Enter data ('\q' to quit): Ring Z Enter data ('\q' to quit): \q Added 3 lines to file data.txt

Programskiss storedata_1.py: read_data format_data Funktion som läser in indata Funktion som väljer flformat Anropar Huvudprogram

storedata_1: huvudprogram if name == " main ": data_file = open("data.txt", "a") more_data = True no_of_lines = 0 while more_data: data = read_data() if data == "\Q": more_data = False else: data_file.write(format_data(data)) no_of_lines = no_of_lines + 1 print "Added %i of lines to file %s" % ( (no_of_lines, 'data.txt')) data_file.close() Testar om modul är toppmodul Egna funktioner

storedata_2: tidsmärkning och filhantering Förändringar (refactorings): 1) Jag vill spara i antingen egen fil eller default. (Framtid: konfigurerbart) 2) Jag vill tidsstämpla varje data Ny pseudokod: Välj fil (sep konfig-modul) Öppna vald fil WHILE användaren vill: läs in ny data IF NOT \q: formattera data spara data på fil Stäng filen Filen ~/.myapp/data.txt: Tue 08/28/07 (05:19:59 PM)::KOM IHÅG: X Tue 08/28/07 (05:20:03 PM)::HÄNDELSE Y Tue 08/28/07 (05:20:06 PM)::RING Z

Programskiss två moduler storedata_2.py: config.py: Ändrad read_data format_data Anropar get_default_data_file get_user_specific_data_file Ny get_file Anropar Huvudprogram

storedata_2: huvudprogram if name == " main ": file_name = get_file() data_file = open(file_name, "a") more_data = True no_of_lines = 0 while more_data: data = read_data() if data == "\Q": more_data = False else: data_file.write(format(data)) no_of_lines = no_of_lines + 1 print "Added %i lines to file %s" % ( (no_of_lines, file_name)) data_file.close() Nya funktioner: minimalt ingrepp i gammal källkod getfile anropar config format anropar time

Separat config-modul: config.py import os import os.path _metadata={"application_home": "/usr/local/myapp", "default_user_directory": "~/.myapp", "data_file": "data.txt"} def get_default_data_file(): return os.path.join(_metadata["application_home"], _metadata["data_file"]) def get_user_specific_data_file(): return os.path.join( os.path.expanduser(_metadata["default_user_directory"]), _metadata["data_file"])

Summering Översikt över Learning Python Part II-IV, kap 18 Vi återkommer till detaljer i laborationer och teori på föreläsningar Glöm inte läsa Kap 2-3 och wikipedia från föreläsning 1! Gör egna övningar!