Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afHelle Overgaard Redigeret for ca. et år siden
1
Introduktion til programmering Uge 38 Python 2 Learning Python, kap 8-12.
2
Plan Sidste gang Sætninger og udtryk Kontrolstrukturer Selektion If…: Gentagelse While…: For…: Funktioner Dokumentation Anden obligatoriske øvelse
3
Sidste gang Værdier og typer Type(værdi) Id(variabel) Simple typer (scalarer) Tekst (string), index, slicing Tal (int, float) Sammensatte typer List [] Tuple () Dictionary () Udtryk
4
Udtryk: noget der repræsenterer en værdi 1, ’Peter’ Et udtryk (expression) er en kombination af andre udtryk og operatorer der repræsenterer og producerer en (ny) værdi 1 + 2 repræsenterer 3 –et tal 'Peter'[1:3] repræsenterer 'et’ – en tekst [1,2,3][1] repræsenterer 2 – et tal [1,2,3][0:2] repræsenterer [1, 2] – en liste [1:3] repræsenterer en operation
5
Semiotisk set Udtryk er repræsentationer Deres objekt er værdier De frembringer de værdier de repræsenterer Det gør de naturlige sprog ikke At sige ”en Peugeot 307” frembringer ingen bil Men at skrive 'Peter'[1:3] frembringer teksten 'et' Repræsentamen: termer og udtryk Objekt: værdier, f.eks. tekster, tal, lister, tupler, dictionaries Interpretant: Python fortolkeren
6
'Peter'[1:3][::-1] = 'te’. Hvorfor? 'Peter'[1:3][::-1] Peter et te slicing R O R O R O R O R O Operationer er også værdier der har en repræsentation
7
Sætninger og udtryk Programmer består af moduler Moduler består af sætninger (statements) Sætninger indeholder udtryk Udtryk repræsenterer og producerer værdier Sætninger og udtryk Sætninger repræsenterer ikke værdier Sætninger regulerer hvordan værdierne produceres Eksempel >>> len('peter') 5 >>> x = 'peter’ >>> Udtryk: producerer 5 sætning: producerer ingenting men ændrer variables værdier
8
Påstande – Boolske udtryk Udtryk der repræsenterer sand eller falsk. De repræsenterer værdierne 1 og 0 (i nyere versioner True og False) Naturlige sprog: påstande Bussen går kl. 9.13. Det er løgn! Nogle sproghandlinger som ordrer kan hverken være sande eller falske Gå nu op i bussen. Det er løgn – lyder mærkeligt. >>> 1 + 3 == 4 True >>> 'Peter' == 'Karl’ False >>> 'Peter' <> 'Karl’ True
9
Sandhedsværdier Boolske operatorer And, or, not >>> 1+2 == 3 and 4+5 == 9 True >>> not (1+2 == 3 and 4+5 == 9) False >>> (1+2 == 3 or 1+2 == 9) True
10
Sandhedstabeller pqp and q true false truefalse pqp or q true falsetrue falsetrue false pNot q truefalse true
11
Nye operatorer kan defineres ved de gamle P implies Q = not(P and not(Q)) = not(P) or Q Hvis P så Q pqNot pnot (p) or q true falsetrue false true false true
12
Naturlige sprog og logiske Naturlige sprog lægger en årsagsfortolkning ind i hvis-så Hvis 2 + 2 = 5, så vinder socialdemokraterne næste valg Logisk: altid sand fordi 2 + 3 = 5 er logisk falsk Naturligt sprog: nonsens fordi der ikke er nogen årsagssammenhæng pqNot pnot (p) or q true falsetrue false true false true
13
If-kontrolstruktur if : er en selektionsstruktur skal referere til en sandhedsværdi Handlingssætningerne udgør en blok Blokke er indenteret med tabulator eller mellemrum if :
14
’if’ if-sætninger kan indeholde mange forskellige betingelser if : elif : else:
15
Funktioner Funktioner er en måde at gruppere sætninger så de kan kaldes igen og igen En funktion er er værdi (et objekt) Det er en måde at strukturere et program i overskuelige enheder To keywords: Def : sætter et navn til at referere til et funktionsobjekt Return: får funktionen til at returnere en værdi (et objekt)
16
Funktioner def funktionsnavn ( param1, param2,..., paramN): sætning1 sætning2 ... sætningN return resultat
17
Eksempel def udskrivOmvendt(tekst): print tekst[::-1] def udskrivOmvendt2(tekst): return tekst[::-1] >>>x = udskrivOmvendt('peter') >>> x 'retep’ >>> udskrivOmvendt1('peter') 'retep’
18
Pass by reference Parameternavne refererer til samme objekt som de aktuelle parametre Pas på! >>> x = [1,2,3] >>> def func(y):... del(y[0])... >>> func(x) >>> x [2, 3] x y [1,2,3] R O R O
19
Globale og lokale variable >>> def func():... z =[]... >>> z = [1,2,3] >>> func() >>> z [1, 2, 3] >>> def func() :... global z... z = [] >>> func() >>> z [] 1,2,3 []
20
Naturlige sprog Hvis Anders Fogh har et problem med sin spindoktor Og ”Anders Fogh” refererer til samme person som ”Danmarks statsminister” Så er det sandt at Danmarks statsminister har et problem med sin spindoktor
21
Funktionsværdier Funktioner i Python er first-class citzens Et funktionsnavn refererer til en værdi med typen ’function’ >>> type(func) >>> Derfor kan man bruge et funktionsnavn som parameter i en anden funktion.
22
Funktionsværdier def union (sekvens1, sekvens2): resultat = sekvens1[:] for x in sekvens2: if not(x in sekvens1): resultat.append(x) return resultat def intersection(sekvens1,sekvens2): resultat = sekvens1[:] for x in sekvens1: if not(x in sekvens2): resultat.remove(x) return resultat def do(sekvens1,operation, sekvens2): return operation(sekvens1, sekvens2)
23
Funktionsnavn og funktionsresultater Do er en metafunktion der sætter andre funktioner sammen med deres argumenter print do([1,2,3],union,[3,4,5]) [1, 2, 3, 4, 5] Funktionsnavnet union bruges som parameter og dets værdi udføres i do funktionen. print intersection(union([1,2,3],[3,4,5]),[1,4]) [1, 4] Resultatet af Union ([1,2,3],[3,4,5]), nemlig [1, 2, 3, 4, 5], gives som parameter til Intersection hvis anden parameter er [1,4] Union repræsenterer en funktion Union ([1,2,3],[3,4,5]) repræsenterer en liste.
24
Apply Apply er en generel indbygget metafunktion der knytter funktionsnavne til deres parametre. print apply(union, ([1,2,3], [3,4,5])) [1, 2, 3, 4, 5]
25
Kald af funktioner Et funktionskald repræsenterer en sammenstilling af en funktion og nogle værdier Disse repræsenterer og producerer funktionens resultat Union'[1,2,3][3,4,5] funktion liste R O R O R O R O
26
Naturlige sprog Kancellisprog foretrækker ofte metafunktioner og beskriver funktioner ved navneord Ransag mistænktes hus Foranstalt en ransagelse af mistænktes hus FunktionParameter Funktions navn Parameter Metafunktion
27
Returnering af flere værdier fra en funktion Brug en tupel Brug tupel-unpacking def funktion(a,b): res1 = a+b res2 = a* b res3 = a-b return (res1,res2,res3) x,y,z = funktion(23,34)
28
if __name__ == “__main__”: Hvordan får man startet et program fra kommandolinjen hvis de kun består af funktioner? def f1(): pass def f2(): print “Morten” if __name__ ==”__main__”: f1() f2()
29
Funktioner - igen Funktioner er en metode til at skifte fortolkning Funktionens navn repræsenterer én del af verden – f.eks. problemområdet Funktionens indre repræsenterer en anden del af verden – f.eks. computeren.
30
Fra Python til madlavning def TagOpAf(enKontainer): EtElement = spand[0] del enKontainer[0] return EtElement def LaegI(etElement,enKontainer): enKontainer.append(etElement) def FyldI(etIndhold): return etIndhold def DerErNogetI(enKontainer): return enKontainer <> [] def ErLukket(etElement): return etElement == 0 def KoekkenTilstand(): print '''spandens indhold: %s.Grydens indhold: %s. Affaldsposens indhold: %s''' % (spand, gryde, affaldspose)
31
Madlavning # Spanden indeholder muslinger. 0 betyder lukket, 1 betyder åben spand = FyldI([1,0,0,1,0,1,0,0]) # gryde og affaldspose er tomme i starten gryde = FyldI([]) affaldspose = FyldI([]) KoekkenTilstand() # sålænge der er muslinger i spanden while DerErNogetI(spand): # tag en musling op enmusling = TagOpAf(spand) # hvis muslingen er lukket if ErLukket(enmusling): #så læg den i gryden LaegI(enmusling,gryde) # ellers else: #læg den i affaldsposen LaegI(enmusling,affaldspose) KoekkenTilstand()
32
Moduler Moduler er Pythonprogrammer der kan bruges fra andre Pythonprogrammer De ”importeres” ved at bruge kommandoen import. Moduler kan indkapsle en verden man ønsker at bruge men ikke at forstå. Modulet beskriver hvordan man bruger dets verden men ikke hvordan den fungerer i detaljer Vi tager alle funktionerne ud af programmet og lægger dem i et modul. Når vi skal skrive programmer om muslinger, importerer vi modulet.
33
Et muslingemodul ''' Dette modul tilvejebringer metoder til tillavning af muslinger TagOpAf: Liste --> element LeagI: Element, Liste --> ingenting. Tilfoejer elementet til listen FyldI: Liste,Liste. Returnere Liste DerErNogetI: Liste --> True eller False. Sand hvis listen ikke er tom ErLukket: Element --> True eller False. Sand hvis elementet er 0 KoekkenTilstand(). Printer køkkentilstanden ud ''' ef TagOpAf(enKontainer): EtElement = spand[0] del enKontainer[0] return EtElement def LaegI(etElement,enKontainer): enKontainer.append(etElement) def FyldI(etIndhold): return etIndhold def DerErNogetI(enKontainer): return enKontainer <> [] def ErLukket(etElement): return etElement == 0 def KoekkenTilstand(): print '''spandens indhold: %s. Grydens indhold: %s. Affaldsposens indhold: %s''' % (spand, gryde, affaldspose) Dokumentation: fortæller hvordan modulet kan bruges
34
Et program der bruger muslingemodulet import muslingemodul spand = FyldI([1,0,0,1,0,1,0,0]) # gryde og affaldspose er tomme i starten gryde = FyldI([]) affaldspose = FyldI([]) # sålænge der er muslinger i spanden while DerErNogetI(spand): # tag en musling op enmusling = TagOpAf(spand) # hvis muslingen er lukket if Erlukket(enmusling): #så læg muslingen i gryden LaegI(enmusling,gryde) else: #læg muslingen i affaldsposen LaegI(enmusling,affaldspose) Vi kan nu næsten skrive programmet i det sprog som hører til muslingetilberedning
35
Hvad skete der? Vi fik skabt cohæsion Coherence occurs when the meaning of the text can be arranged in simple symmetrical structures within a limited set of dimensions. The set of dimensions is normally called the isotopy of the text, because they are meanings that recur as a part of many sentences and words. Symmetrier: TagOpAf(enKontainer) vs LaegI(etElement,enKontainer) Isotopier: I eller ikke i en kontainer Åben eller lukket
36
Janus tegn Funktionskaldet repræsenterer Den kode der eksekveres når vi møder kaldet Den betydning programmet har i problemområdet O: muslingerR: kaldet O: lister I: madlavning I: programmering TagOpAf(spand) EtElement = spand[0] del enKontainer[0] return EtElement Tage en musling op af spanden
37
Kommentarer & Docstring Kommentarer i pythonprogrammer starter med # Kommentarer ignoreres af fortolkeren Docstring er en kommentar der gemmes med koden def funktion(): “”” Dette er en docstring “”” pass
38
Docstring dir() dir(str), dir(list) help(str.startswith) Dir(muslingemodul) Help(muslingemodul) Help(muslingemodul.LaegI)
39
Dokumentation og hjælp >>> help(muslingemodul) Help on module muslingemodul: NAME muslingemodul FILE c:\python24\pythonfiles\37\muslingemodul.py DESCRIPTION Dette modul tilvejebringer metoder til tillavning af muslinger TagOp: Liste --> element LeagI: Liste, Element --> ingenting. Tilføjer elementet til listen FyldI: Liste,Liste. Returnere Liste HarIndhold: Liste --> True eller False. Sand hvis listen ikke er tom ErLukket: Element --> True eller False. Sand hvis elementet er 0 KoekkenTilstand(). Printer køkkentilstanden ud FUNCTIONS ErLukket(etElement) FyldI(etIndhold) HarIndhold(enKontainer) KoekkenTilstand() LaegI(enKontainer, etElement) TagOp(enKontainer)
40
Docstrings I muslingemodulet def LaegI(etElement,enKontainer): '''læg noget ned i kontainer''' enKontainer.append(etElement) >>> help(muslingemodul.LaegI) I det aktive vindue: Help on function LaegI in module muslingemodul: LaegI(etElement, enKontainer) læg noget ned i kontainer
41
Obligatorisk opgave Emne: sætninger, udtryk, sandhedsværdier, kontrolstrukturer, funktioner, kommentarer Obl øvelse 2. Skriv et program der åbner en tekstfil og tæller hvor mange linjer og ord der er i den: >>> python opg2-XXXX.py... Indtast filnavn: Test.txt... Filen indeholder: 34 linjer og 354 ord.
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.