Föreläsning 4 Python: Definiering av egna funktioner Parametrar datalogi för E1 2005-11-08 Föreläsning 4 Python: Definiering av egna funktioner Parametrar Lokala och globala variabler Retursats None Vahid Mosavat, Nada, KTH
? Program utdata indata datalogi för E1 2005-11-08 Vahid Mosavat, Nada, KTH
datalogi för E1 2005-11-08 Definiera funktioner Ett sätt att strukturera ett program är att definiera generella funktioner som sedan kan anropas flera ggr under programmet. def funktionensnamn( pararmetrar ): Kod som ska exekveras när funktionen anropas Indragning är viktigt! Vahid Mosavat, Nada, KTH
Exempel def meny() print ”välj:” print ”1. Spela” datalogi för E1 2005-11-08 Exempel def meny() print ”välj:” print ”1. Spela” print ”2. Visa spelregler” print ”3. Avsluta” definition meny() Anrop Vahid Mosavat, Nada, KTH
parametrar, return och None datalogi för E1 2005-11-08 parametrar, return och None Indata kan skickas till en funktion genom att ha formella parametrar vid definition av funktionen. Alla funktioner har en utdata, har man en retursats vid definitionen så returnerar funktionen ett värde av den typ som är specificerat, annars returneras None.(vilket betyder ingenting för python) Vahid Mosavat, Nada, KTH
Exempel def calc(a,b): c = a*b + b return c m = calc(2,3) datalogi för E1 2005-11-08 Exempel def calc(a,b): c = a*b + b return c m = calc(2,3) def calc(a,b): c = a*b + b m = calc(2,3) Variabeln m kommer att ha värdet 9 vilket är av typen integer Variabeln m kommer att ha värdet None Vahid Mosavat, Nada, KTH
Exempel def calc(a,b): c = a*b + b return c m = calc(2,3.0) datalogi för E1 2005-11-08 Exempel def calc(a,b): c = a*b + b return c m = calc(2,3.0) def comp(a,b): return a > b m = comp(2,3) Variabeln m Kommer att ha värdet 9.0 vilket är av typen float Variabeln m kommer att ha värdet False vilket är boolean Vahid Mosavat, Nada, KTH
Program indata f1() f3() f2() datalogi för E1 2005-11-08 Vahid Mosavat, Nada, KTH
datalogi för E1 2005-11-08 import, from … import Funktioner kan definieras i en egen fil och där efter importeras i olika program genom att använda: import filnamn (obs! utan .py) eller from filnamn import funktionsnamn Vahid Mosavat, Nada, KTH
datalogi för E1 2005-11-08 reload() reload() är en inbyggd funktion som används till att uppdatera en funktion som har importerats tidigare: import mymath … reload(mymath) reload funkar inte med importering av fölajnde form: from mymath import * Vahid Mosavat, Nada, KTH
Exekveringsfel, logisktfel datalogi för E1 2005-11-08 Exekveringsfel, logisktfel Exekveringsfel det är då programmet kraschar mitt i körningen, d.v.s. Programmet avslutas inte utan avbryts p.g.a. något fel. Logiskt fel det är då programmet avslutas men felaktig utdata kommer ut. Vahid Mosavat, Nada, KTH
Logiskt fel brud brudgumman datalogi för E1 2005-11-08 Vahid Mosavat, Nada, KTH
Logiskt fel brud brudgumman datalogi för E1 2005-11-08 Vahid Mosavat, Nada, KTH
Exempel på logiskt fel Ett av följande anrop är fel, vilket? datalogi för E1 2005-11-08 Exempel på logiskt fel def BMI( height , weight): return weight/(height*height) Ett av följande anrop är fel, vilket? BMI(1.70, 65) 22.49 BMI(65, 1.70) 0.000402 Vahid Mosavat, Nada, KTH
translate(), maketranse() datalogi för E1 2005-11-08 translate(), maketranse() tranlate() och maketranse() byter ut två del-strängar med varandra, exempel: Dic = maketranse(”Nd”,”Dt”) namn = ”Nada” namn.translate(dic) ’Data’ kommer att returneras Vahid Mosavat, Nada, KTH
Variabler En variabel kan antingen vara global eller lokal: datalogi för E1 2005-11-08 Variabler En variabel kan antingen vara global eller lokal: Globala variabler Globala variabler ska definieras med nyckelordet global Lokalvariabel Formella parameter Lokala variabler deklareras i funktioner Lokala variabler är känd endast i funktionen och har kortare livslängd än globala variabler Vahid Mosavat, Nada, KTH
Exempel Följande kod är korrekt def change(): global x x=x/2 x=10 datalogi för E1 2005-11-08 Exempel Följande kod är korrekt def change(): global x x=x/2 x=10 print x change() Följande kod ger fel def change(): x = x/2 change() Vahid Mosavat, Nada, KTH
Exempel Följande kod ger fel def change(x): global x x = x/2 x=10 datalogi för E1 2005-11-08 Exempel Följande kod ger fel def change(x): global x x = x/2 x=10 print x change(x) Följande kod är rätt def change(x): x = x/2 x=10 print x change(x) Vahid Mosavat, Nada, KTH