729G04 PYTHON 1 MUDDYCARDS JODY FOO Department of Computer and Information Science (IDA) Linköping University, Sweden 1 2 Positivt Negativt 3 4
Kursmål OM PROGRAMMERINGSDELEN konstruera grundläggande datorprogram och formella modeller för enkla kognitionsvetenskapliga tillämpningar använda begrepp och modeller från grundläggande diskret matematik förklara vad en algoritm är och tillämpa grundläggande algoritmer använda olika datatyper/datastrukturer använda olika typer av styrstrukturer visa förståelse för vad datormodellering innebär och ha förmåga att konstruera enkla datorprogram LiU EXPANDING REALITY 5 6 Personal Examinationsmoment Examinator & kursansvarig: Jody Foo Föreläsare: Jody Foo Labbassistenter: Benjamin Helmersson Elias Åsgård Evelina Rennes Ove Jansson Kursadministratör: Annelie Almquist Examinationsmomenten ska stämma överrens med kursmålen. I denna kurs: UPG1 1,5hp: Hemuppgift i diskret matematik TEN4 2,5hp: Datorsalstenta LAB5 1hp: Individuella labbar LAB6 1hp: Parlabbar LiU EXPANDING REALITY LiU EXPANDING REALITY 7 8
Examination Datorsalstenta Datorsalstenta (G/VG): 14:00-18:00 15 december 2014 Inlämningsuppgift i Diskret matematik (G): 22-26 september 2014 Labborationsuppgifter i Python (G) Betyg G+G+G = G VG + G + G = VG Programmeringstenta vid dator Godkänd bok får tas med Test-tenta för att prova på hur det känns LiU EXPANDING REALITY LiU EXPANDING REALITY 9 10 Laborationer Webreg och grupper Laborationer görs vid dator Ni kommer behöva lägga ner mer tid än den schemalagda. Vissa labbtillfällen är med handledare, andra utan.! Labb 1-3 görs individuellt & labb 4-8 som görs i grupper om två Inlämning: e-post till er handledare LiU EXPANDING REALITY LiU EXPANDING REALITY 11 12
Inlämningar och rättningstillfällen Översiktsplan I regel 1 vecka per labb. Står i TimeEdit vilken labb som hör till vilket tillfälle. Inlämning: Labbar skickas till din labbassistent Rättningstillfällen: labbar rättas vid rättningstillfällen. Datum kommer att publiceras på kurshemsidan under "Labbar". LiU EXPANDING REALITY 13 14 Kurslitteratur Strandh, R. 2014. Introduktion till Datavetenskap. Miller & Ranum. 2013. How to Think Like a Computer Scientist - Learning with Python: Interactive Edition (Using Python 3.x). URL: http:// interactivepython.org/runestone/static/thinkcspy/ index.html. PILOTPROJEKT - CODELA Downey. 2012. Think Python - How to Think Like a Computer Scientist. URL: http:// www.greenteapress.com/thinkpython/. Gratis som PDF/HTML, finns att beställa som bok LiU EXPANDING REALITY 15 16
Tillgång till laptop/surfplatta Tillgång till surftelefon 17 18 Dagens Python Datatyper: siffor, text och listor Operatorer Variabler Funktioner PYTHON 19 20
Varför Python Om Python - Historia Generellt, högnivåspråk Fokus på läsbarhet Flera programmeringparadigm kan användas Det går att använda till vardags Skapades av Guido van Rossum version 1.0, i januari 1994 version 2.0 i oktober 2000 version 3.0 i december 2008 21 22 DATATYPER: OLIKA SLAGS INFORMATION Wikimedia Commons, JurgenG 23 24
Siffror - numeriska värden SIFFROR OCH TEXT I PYTHON heltal (integer): int decimaltal: float 25 26 Från heltal till flyttal Sträng float(1) 1.0 int(1.1) 1 int(1.6) 1 En sträng är en sekvens av tecken. Början och slut på en sträng markeras med ett citattecken - "! Ex: "hej" "Här är en längre sträng!" "356" 27 28
Operatorer OPERATORER: JOBBAR MED DATA +, -, /, *, %! 5 + 5 3-1 21 / 7 3 * 7 7 % 3 29 30 Sätta ihop strängar Datatyper är viktiga Använd operatorn + "Hej" + "san" "Hejsan" 5 + 5 =? "hej" + "5" =? "hej" + 5 =? 31 32
CODELA 1: SIFFROR, OPERATORER, PRINT VARIABLER http://www.ida.liu.se/codela/as/729g04/01a 33 34 Variabler och tilldelning Variabler och tilldelning En variabel är en etikett som står för ett värde Låt etiketten x stå för värdet 10 x = 10 Vi säger att vi tilldelar x värdet 10. Variablen på vänster sida om likhetstecknet får värdet som vi beräknar på höger sida. z = x + y x = 5 y = x x = x + y 35 36
Variabelnamn I Python är det skillnad på stora och små bokstäver Variabeln a är inte samma som variabeln A hej är inte samma som Hej För längre variabelnamn används understreck som mellanslag number_of_students = 53 CODELA 2: VARIABLER OCH VÄRDEN http://www.ida.liu.se/codela/as/729g04/01b 37 38 Sanningsvärden SANNING OCH SEKVENS Python har en speciell datatyp som används för värdena sant och falskt. True = sant False = falskt 39 40
Sekvenser Sekvenser list är en datatyp i Python Både listor och strängar är sekvenser. listor: list [1, 2, 3, 4] En lista börjar och slutar med en hak-klammer. Varje element skiljs åt med ett kommatecken. man kan stoppa in vad som helst i en lista teckensträngar: str "hej" "12" 'jag är en sträng' 41 42 Plocka ut delar av en sekvens Plocka ut delar av sekvenser Numrering av element görs med heltal och börjar med heltalet 0. Numreringen kallas för index. 1:a elementet har alltså index 0.! Sista index = längden på sekvensen - 1 eggs = [1, 2, 3, 4, 5] 0 1 2 3 4 43 44
Index Plocka ut delar av sekvenser [heltal] eggs = [1, 2, 3, 4, 5] eggs[ 0 ] 1 2 3 4 45 46 Plocka ut delar av sekvenser Plocka ut delar av sekvenser eggs = [1, 2, 3, 4, 5] eggs[ 0 1 ] 2 3 4 eggs = [1, 2, 3, 4, 5] 0 eggs[ 1 2 ] 3 4 47 48
Plocka ut delar av sekvenser Plocka ut delar av sekvenser eggs = [1, 2, 3, 4, 5] 0 1 eggs[ 2 3 ] 4 eggs = [1, 2, 3, 4, 5] 0 1 2 eggs[ 3 4 ] 49 50 Plocka ut delar av sekvenser eggs = [1, 2, 3, 4, 5] eggs[-1] 5 eggs[-2] 4 eggs[5] FEL Plocka ut delar av sekvenser 0 1 2 3 4 5 eggs = [1, 2, 3, 4, 5] 51 52
Slice Plocka ut delar av sekvenser 0 1 2 3 4 5 [heltal1:heltal2] "Plocka ut mellan strecken heltal1 och heltal2." eggs = [1, 2, 3, 4, 5] eggs[0:1] 53 54 Plocka ut delar av sekvenser 0 1 2 3 4 5 eggs = [1, 2, 3, 4, 5] eggs[2:4] Plocka ut delar av sekvenser eggs = [1, 2, 3, 4, 5] eggs[1:] [2, 3, 4, 5] eggs[-2:] [4, 5] eggs[:4] [1, 2, 3, 4] 55 56
Funkar också för strängar Blandade listor, listor i listor spam = "buy cheap" spam[0] "b" spam[0:3] "buy" [1, "2", 3, "hejsan"] [1, 2, 3, [4], [5, 6], ["7", [8, [9]]]] 57 58 Snabbrepetition listor och strängar är sekvenser sekvenser har index man kan använda [] för att plocka fram en slice (ny sekvens) eller värdet på en viss plats man kan använda operatorn + på sekvenser en lista kan innehålla blandade datatyper CODELA 3: LISTOR OCH STRÄNGAR http://www.ida.liu.se/codela/as/729g04/01c 59 60
Snabbrepetition! Datatyper numeriska värden: int, float sekvenser: str, list sanningsvärden: True, False Operatorer + - * / [], slice, index FUNKTIONER I PYTHON 61 62 f(x) = x + x f(x) = 4x Funktioner def f(x): return x + x def f(x): return 4*x funktionsnamn argument returvärde indentering Funktioner def f(x): return x + x 63 64
Funktioner def add_numbers(number1, number2): return number1 + number2! add_numbers(1, 2) CODELA 4: FUNKTIONER http://www.ida.liu.se/codela/as/729g04/01d 65 66 Använd type() för att ta reda på datatyp INBYGGDA FUNKTIONER För att ta reda på vilken datatyp något är, kan funktionen type() användas! Ex: type(3) -> int type("hej") -> str type([1, 2, 3]) -> list 67 68
print() Används för att skriva ut print("i am a string") eggs = "Hello" print(eggs) print(eggs + "Mr Spam") DU FÅR SLUMPEN 69 70 Moduler - utökad funktionalitet Modulen random Man använder moduler för att uttöka funktionalitet Innan man kan använda funktioner från en modul måste man importera den med hjälp av nyckelordet import! import random random.choice(sekvens) random.shuffle(sekvens) random.sample(sekvens, antal) random.random() random.randint(heltal1, heltal2) 71 72
CODELA 5: RANDOM http://www.ida.liu.se/codela/as/729g04/01e LABBSALAR OCH LABBMILJÖN 73 74 Labbmiljön PUL:arna Hitta till PUL:arna Konto Tunna klienter som kör Solaris 75 76
IDA-konto Samma användarnamn som för LiU-ID (e-post m.m.) Samma lösenord (så länge man inte byter lokalt på IDA) Registrering LiU-ID IDA-konto 77 78 Fönster och skal 79 80
Fönster och skal 81 82 Principer och begrepp för skalfönster prompt kommandon argument förgrund bakgrund output/stdout Vanliga kommandon ls cd rm mv pwd 83 84
Filsystem Navigation i skalet Filer och kataloger/mappar + symboliska länkar / zaza <1> / tecken betydelse home/ home/./ nuvarnade katalog../ katalogen ovanför jodfo042/ jodfo042/ www-pub/ ~ användarkatalog ~/ min hemkatalog www-pub/ 85 86 Navigation i skalet Navigation i skalet / home/ zaza <1> pwd / home/ zaza <1> pwd /home/jodfo042 zaza <2> jodfo042/ jodfo042/ www-pub/ www-pub/ 87 88
Navigation i skalet Navigation i skalet / home/ zaza <1> pwd /home/jodfo042 zaza <2> cd / / home/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> jodfo042/ jodfo042/ www-pub/ www-pub/ 89 90 Navigation i skalet Navigation i skalet / home/ jodfo042/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> cd ~/ / home/ jodfo042/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> cd ~/ zaza <4> www-pub/ www-pub/ 91 92
Navigation i skalet Navigation i skalet / home/ jodfo042/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> cd ~/ zaza <4> cd ~/www-pub / home/ jodfo042/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> cd ~/ zaza <4> cd ~/www-pub zaza <5> www-pub/ www-pub/ 93 94 Navigation i skalet Navigation i skalet / home/ jodfo042/ www-pub/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> cd ~/ zaza <4> cd ~/www-pub zaza <5> cd.. / home/ jodfo042/ www-pub/ zaza <1> pwd /home/jodfo042 zaza <2> cd / zaza <3> cd ~/ zaza <4> cd ~/www-pub zaza <5> cd.. zaza <6> 95 96
STONE IDLE http://www.ida.liu.se/stone/main 97 98 IDLE Program som integrerar redigering av Pythonkod med funktionaliteten att exekvera den kodfil man redigerar i en interaktiv pythonmiljö. IDLE Python: pythoninterpretatorn Programkod Interpretator CPU Python: Programkod i språket Python 99 100
IDLE För att starta IDLE, skriv följande kommando i ett terminalfönster idle3 eller F5 idle3 &! Om det krånglar, använd idle3 -n eller idle3 -n & 101 102 DEMO: STARTA PYTHON (IDLE) SPARA TILL FIL I IDLE 103 104
Vad händer när det blir fel? Olika typer av fel: syntax error (syntaxfel) runtime error (fel vid körning) semantic error (semantiskt fel) SLUT 105 106