Kap 3: Funksjoner og if-tester

Like dokumenter
Kap 2: Løkker og lister

Øvingsforelesning 5 Python (TDT4110)

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Ch.4: User input and error handling

Øvingsforelesning 5 Python (TDT4110)

Mathematics 114Q Integration Practice Problems SOLUTIONS. = 1 8 (x2 +5x) 8 + C. [u = x 2 +5x] = 1 11 (3 x)11 + C. [u =3 x] = 2 (7x + 9)3/2

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Slope-Intercept Formula

Forelesning inf Java 5

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Forelesning inf Java 5

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Dynamic Programming Longest Common Subsequence. Class 27

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Python: Funksjoner og moduler Kapittel

INF1000 : Forelesning 4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Speed Racer Theme. Theme Music: Cartoon: Charles Schultz / Jef Mallett Peanuts / Frazz. September 9, 2011 Physics 131 Prof. E. F.

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Eksamen i emnet Mat131 - Differensiallikningar I Onsdag 25. mai 2016, kl.

Ch.7: Innføring i klasser

Øvingsforelesning 1 Python (TDT4110)

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

UNIVERSITETET I OSLO

Neural Network. Sensors Sorter

Repetisjon Novice Videregående Python PDF

UNIVERSITETET I OSLO

Eksamensoppgave i TMA4135 Matematikk 4D

Trigonometric Substitution

IN2010: Algoritmer og Datastrukturer Series 2

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

UNIVERSITETET I OSLO

MAT1030 Diskret Matematikk

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

MAT1030 Plenumsregning 1

Programmering i R. 6. mars 2004

Han Ola of Han Per: A Norwegian-American Comic Strip/En Norsk-amerikansk tegneserie (Skrifter. Serie B, LXIX)

Python: Funksjoner og moduler Kapittel

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Exercise 1: Phase Splitter DC Operation

Databases 1. Extended Relational Algebra

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Forside. 1 Hva skrives ut?

Ch.9: Objektorientert programmering

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

TDT4110 IT Grunnkurs Høst 2015

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

Øvingsforelesning 3 Python (TDT4110)

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

INF1000: Forelesning 4. Mer om arrayer Metoder

Løse reelle problemer

TDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Hangman. Level. Introduksjon

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Front page. 1 Lists. Which one of these does not result in a list of length 4? 07/12/2017 Prøveeksamen IN1900 og IN-KJM1900 H17

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

Bildebehandling med Python og EzGraphics

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Del 1 En oversikt over C-programmering

INF120: Oblig 3. Yngve Mardal Moe

UNIVERSITETET I OSLO

TDT4110 IT Grunnkurs Høst 2016

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

Løse reelle problemer

Moving Objects. We need to move our objects in 3D space.

MAT-INF1100 Oblig 1. Teodor Spæren, brukernavn teodors. September 16, 2015

Vi skal se på lambda-uttrykk. Følgende er definerte og vil bli brukt gjennom oppgaven

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

MAT1030 Diskret matematikk

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

Ch.7: Innføring i klasser (del 2)

1. Explain the language model, what are the weaknesses and strengths of this model?

Den som gjør godt, er av Gud (Multilingual Edition)

Vekeplan 4. Trinn. Måndag Tysdag Onsdag Torsdag Fredag AB CD AB CD AB CD AB CD AB CD. Norsk Matte Symjing Ute Norsk Matte M&H Norsk

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

PROSESSTEKNIKK (TKP4120) Tema: "Van der Waals tilstandslikning" (ca. 4 timer)

pnvdb Documentation Release Jan Tore Kyrdalen

TMA4240 Statistikk 2014

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

UNIVERSITETET I OSLO

Inf1000 uke 5 18.sept. 2007

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

Ch.4: User input and error handling

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

Transkript:

Kap 3: Funksjoner og if-tester Ole Christian Lingjærde, Institutt for Informatikk, UiO 2-5 September, 2019 (Del 1 av 2)

Forrige forelesning på en foil Lage lister: eksplisitt, range, [..]*n, angi regel Liste-indeksering: a[:stop], a[start:], a[start:stop] Tupler: som lister, men kan ikke endres Funksjonen zip: for å traversere flere lister i parallell Lister av lister: kan brukes til å lage tabeller/matriser

Tema i dag Plenumsoppgaver: 2.1, 2.3, 2.4, 2.7, 2.8, 2.14, 2.15 Hvordan definere egne funksjoner i Python

Oppgave 2.1 Exercise 2.1: Make a Fahrenheit-Celsius conversion table. Write a Python program that prints out a table with Fahrenheit degrees 0, 10, 20,..., 100 in the first column and the corresponding Celsius degrees in the second column. Hint: Modify the c2ftablewhile.py program from Sect.2.1.2. Filename: f2ctablewhile

Oppgave 2.1: Løsningsskisse Fra tidligere har vi følgende formel for å regne om fra Celcius til Fahrenheit: Dermed er F = (9/5)C + 32 C = (5/9)(F 32) og vi kan løse oppgaven med en enkel for-løkke eller while-løkke.

Oppgave 2.3 Exercise 2.3: Work with a list. Set a variable primes to a list containing the numbers 2, 3, 5, 7, 11, and 13. Write out each list element in a for loop. Assign 17 to a variable p and add p to the end of the list. Print out the entire new list. Filename: primes.

Oppgave 2.4 Exercise 2.4: Generate odd numbers. Write a program that generates all odd numbers from 1 to n. Set n in the beginning of the program and use a while loop to compute the numbers. (Make sure that if n is an even number, the largest generated odd number is n-1.) Filename: odd.

Oppgave 2.7 Exercise 2.7: Generate equally spaced coordinates. We want to generate n+1 equally spaced x coordinates in [a,b]. Store the coordinates in a list. a) Start with an empty list, use a for loop and append each coordinate to the list. Hint: With n intervals, corresponding to n+1 points, in [a,b], each interval has length h = (b a)/n. The coordinates can then be generated by the formula x i = a + ih for i = 0, 1,..., n. b) Use a list comprehension as an alternative implementation. Filename: coor.

Oppgave 2.7: Løsningsskisse Vi ønsker å dele opp intervallet [a, b] i n like lange delintervaller. Da må hvert delintervall ha lengde h = (b a)/n. Intervaller: [a, a + h], [a + h, a + 2h], [a + 2h, a + 3h] osv.

Oppgave 2.8 Exercise 2.8: Make a table of values from a formula. The purpose of this exercise is to write code that prints a nicely formatted table of t and y(t) values, where y(t) = v 0 t 1 2 gt2 Use n + 1 uniformly spaced t values throughout [0, 2v 0 /g]. a) Use a for loop to produce the table. b) Add code with a while loop to produce the table. Hint: Because of potential round-off errors, you may need to adjust the upper limit of the while loop to ensure that the last point (t = 2v 0 /g, y = 0) is included. Filename:balltable1.

Oppgave 2.8: Løsningsskisse Vi lager først en liste med alle t-verdiene. Vi skal ha n + 1 verdier med jevn avstand på [0, b] hvor b = 2v 0 /g. Avstanden mellom nabopunkter blir h = (b 0)/n = b/n. Punktene blir dermed: t = 0, 0 + h, 0 + 2h,..., 0 + nh De tilhørende y-verdiene finner vi med formelen som er oppgitt.

Oppgave 2.14 Exercise 2.14: Explore Python documentation. Suppose you want to compute with the inverse sine function: sin 1 x. How do you do that in a Python program? Hint: The math module has an inverse sine function. Find the correct name of the function by looking up the module content in the online Python Standard Library document or usepydoc, see Sect.2.6.3. Filename:inversesine.

Oppgave 2.14: Løsningsskisse Mange muligheter, f.eks.: Google "inverse sine python" Søk på https://docs.python.org/3/library Skriv pydoc math i kommandovinduet Skriv!pydoc math i ipython

Oppgave 2.15 Exercise 2.15: Index a nested list We define the following nested list: q =[['a','b','c'], ['d','e','f'], ['g','h']] a) Index this list to extract 1) the letter a; 2) the list [ d, e, f ]; 3) the last element h; 4)the d element. Explain why q[-1][-2] has the value g. b) We can visit all elements of q using this nested for loop: for i in q: for j in range(len(i)): print (i[j]) What type of objects are i and j? Filename: indexnestedlist

Liste-nivåer Lister kan legges inn i lister i vilkårlig mange nivåer: # Ett nivå: A = [1, 2, 3] A[i] # i'te element A[1] # 2 # To nivåer: B = [[1,2,3], [3,4,5]] B[i] # i'te subliste (Eks: B[0] = [1,2,3]) B[i][j] # j'te element i B[i] (Eks: B[0][1] = 2) # Tre nivåer: C = [ [[1,2], [3,4]], [[5,6],[7,8]] ] C[i] # i'te subliste (Eks: C[0] = [[1,2], [3,4]]) C[i][j] # j'te subliste i C[i] (Eks: C[0][1] = [3,4]) C[i][j][k] # k'te verdi i C[i][j] (Eks: C[0][1][1] = 4) # Blandet nivå: D = [0, [1,2], [[3,4],[5,6]]] D[0] # 0 D[1][0] # 1 D[2][1][0] # 5

1D-, 2D- og 3D-tabeller

Selvtest Hva blir resultatet av disse tilordningene, og hvor mange nivåer har listene i hver tilfelle? a = [0, 1] # b = [a, a, a] # c = [b[0], b[1], b[2]] # d = [[a, a], [a, a]] # e = d[0][1] #

Svar på Selvtest Hva blir resultatet av disse tilordningene, og hvor mange nivåer har listene i hver tilfelle? a = [0, 1] # a = [0, 1] (ett nivå) b = [a, a, a] # c = [b[0], b[1], b[2]] # d = [[a, a], [a, a]] # e = d[0][1] #

Svar på Selvtest Hva blir resultatet av disse tilordningene, og hvor mange nivåer har listene i hver tilfelle? a = [0, 1] # a = [0, 1] (ett nivå) b = [a, a, a] # b = [[0, 1], [0, 1], [0, 1]] (to nivåer) c = [b[0], b[1], b[2]] # d = [[a, a], [a, a]] # e = d[0][1] #

Svar på Selvtest Hva blir resultatet av disse tilordningene, og hvor mange nivåer har listene i hver tilfelle? a = [0, 1] # a = [0, 1] (ett nivå) b = [a, a, a] # b = [[0, 1], [0, 1], [0, 1]] (to nivåer) c = [b[0], b[1], b[2]] # c = [[0, 1], [0, 1], [0, 1]] (to nivåer) d = [[a, a], [a, a]] # e = d[0][1] #

Svar på Selvtest Hva blir resultatet av disse tilordningene, og hvor mange nivåer har listene i hver tilfelle? a = [0, 1] # a = [0, 1] (ett nivå) b = [a, a, a] # b = [[0, 1], [0, 1], [0, 1]] (to nivåer) c = [b[0], b[1], b[2]] # c = [[0, 1], [0, 1], [0, 1]] (to nivåer) d = [[a, a], [a, a]] # d = [[[0, 1], [0, 1]], [[0, 1], [0, 1]]] (tre nivåer) e = d[0][1] #

Svar på Selvtest Hva blir resultatet av disse tilordningene, og hvor mange nivåer har listene i hver tilfelle? a = [0, 1] # a = [0, 1] (ett nivå) b = [a, a, a] # b = [[0, 1], [0, 1], [0, 1]] (to nivåer) c = [b[0], b[1], b[2]] # c = [[0, 1], [0, 1], [0, 1]] (to nivåer) d = [[a, a], [a, a]] # d = [[[0, 1], [0, 1]], [[0, 1], [0, 1]]] (tre nivåer) e = d[0][1] # e = [0, 1] (ett nivå)

Funksjoner i Python Matematiske funksjoner: from math import sin y = sin(x) # sin(.) er en funksjon Ikke-matematiske funksjoner: k = range(2, 10, 2) print(len(k)) # range(.) er en funksjon # print(.) og len(.) er funksjoner Metoder (funksjoner som brukes med.-syntaks): a = [5, 10, 40, 45] print(a.index(10)) a.append(50) a.insert(2, 20) # index(.) er en metode # append(.) er en metode # insert(.) er en metode

Funksjoner gjør livet lettere! Lett tilgang til eksisterende kode fra andre prosjekter og pakker (slik som sin(x)) Lett tilgang til kode vi selv har skrevet som en del av programmet vi holder på med Vi kan bruke koden i en funksjon uten å forstå eller se koden Alt vi trenger er å forstå hva som er input til funksjonen og hva som kommer ut

Funksjoner i Python = delegering av ansvar Splitt og hersk: Programmering innebærer vanligvis å løse et større problem ved å løse flere mindre oppgaver og sette det hele sammen. Delegering: For hver av de mindre oppgavene skriver vi en funksjon som løser den. Bedre oversikt: Mye lettere å holde oversikt over løsningen som helhet når koden ikke er fylt av masse trivielle detaljer som like godt kan delegeres videre.

Kort oppsummert Python-funksjon = en samling programsetninger som er gitt et navn og som kan utføres hvor som helst og når som helst En Python-funksjon kan ta input (argumenter) og produsere output (returverdier) Funksjoner gjør programmer mer oversiktlige, lettere å utvide, og ofte kortere.

Python-funksjon for å implementere en matematisk funksjon Den matematiske funksjonen kan implementeres slik i Python: f (x) = x 3 + 3x 2 x + 2 def f(x): return x**3 + 3*x**2 - x + 2 Når vi skal definere en funksjon i Python skriver vi først def, deretter navnet på funksjonen, deretter en liste med argumenter (her: x) Inni funksjonen har vi programsetninger Inni funksjonen kan vi hvor som helst skrive return og dermed stoppe eksekveringen av funksjonen og returnere et svar

Å kalle på en funksjon Viktig skille: Definere en funksjon (gjøres én gang i et program) Kalle på en funksjon (kan gjøres mange ganger) For å kalle på en funksjon, gir vi navnet og eventuelle argumenter i parentes. Eksempel: def f(x): return x**3 + 3*x**2 - x + 2 # Vi definerer funksjonen f x = 1.5 print(f(x)) y = f(x) + f(x/2) z = f(f(x)) + f(sin(x)) z = [f(x) for x in [0,1,2,3]] # Vi kaller på f # Vi kaller på f to ganger # Vi kaller på f tre ganger # Vi kaller på f fire ganger

En funksjon kan ha flere argumenter En funksjon kan ha vilkårlig mange (0,1,2,...) argumenter. Eksempler: def day(): # Funksjon uten argumenter import time day = time.gmtime().tm_yday year = time.gmtime().tm_year return 'It is now the %gth day of %g' % (day,year) def findmax(x,i,j): # Funksjon med tre argumenter maxval = x[i] for k in range(i+1,j+1): if x[k] > maxval: maxval = x[k] return maxval day() # String returned: 'It is now the 249th day of 2017' findmax([1,2,6,3,4,7,2,3], 3, 4) # Value returned: 4

En funksjon kan ha flere returverdier En funksjon kan ha vilkårlig mange (0,1,2,...) returverdier. Eksempel: funksjonen def f(x): return [x**2, x**4] returnerer en liste med to elementer og kan kalles slik: y = f(3.0) # Nå blir y satt lik listen med returverdier y,z = f(3.0) # Nå blir y = 3.0**2 = 9.0 og z = 3.0**4 = 81.0 En funksjon som ikke har noen returverdi trenger ikke return-setning.

Flere returverdier: to varianter Vi kan returnere en liste med returverdiene: Metode A def f(x): return list[x**2, x**4] Vi kan returnere et tuppel med returverdiene: Metode B def f(x): return x**2, x**4 Vi skal senere lære flere måter å returnere flere verdier på.

Kalle på funksjon med navngitte argumenter Argumentnavn kan gis eksplisitt når vi kaller på en funksjon. Da kan argumentene gis i hvilken som helst rekkefølge. Eksempel: anta at vi har definert funksjonen def f(x,y): return x**2-2*x*y + y**2 Da gir disse fire kallene identisk resultat: z = f(3, 4) z = f(3, y=4) z = f(x=3, y=4) z = f(y=4, x=3) # Ikke navngitte argumenter # Ett navngitt argument # To navngitte argumenter # To navngitte argumenter

Lokale variabler i en funksjon Alle variabler som er definert inni en funksjon er lokale variabler. De eksisterer bare så lenge funksjonen utføres (eksekverer) og de er usynlige på utsiden av funksjonen. Eksempel: g = 4 def y(t, v0): g = 9.81 return v0*t - 0.5*g*t**2 # Global variabel (utenfor funks # Lokal variabel print("g = %3.1f" % g) z = y(1,1) print("g = %3.1f" % g) Her vil begge print-setningene skrive ut "g = 4.0". Variabelen g definert på innsiden av funksjonen y(...) er usynlig på utsiden av funksjonen.

Funksjonsargumenter er lokale variabler Argumenter i en funksjon er lokale variabler og er derfor kun synlige på innsiden av funksjonen. Eksempel: def g(s,t): c0 = 1.05 res = (s+t+c0)**2 return res y = g(3.5, 5.0) Kall på en funksjon Kallet g(3.0, 5.0) fører til at disse setningene utføres: s = 3.5 t = 5.0 c0 = 1.05 res = (s+t+c0)**2 return res Her er s, t, c0 og res lokale variabler i funksjonen.

Globale variabler er også synlige inni funksjoner En variabel som er definert før en funksjonsdefinisjon er også synlig inni funksjonen. pi = 3.14 def area(r): res = pi * r * r return res print('the area of a circle with radius %g is %g' % (2, area(2))) I dette tilfellet er pi en global variabel og brukes inni funksjonen.

Lokale variabler kan maskere (skjule) globale variabler Hvis en lokal variabel og en global variabel har samme navn, vil kun den lokale variabelen være synlig inni funksjonen. Eksempel: def g(t): alpha = 1.0 beta = 2.0 return alpha + beta*t print(g(1)) alpha = 10.0 print(g(1)) # Skriver ut '3.0' # Skriver ut '3.0' I dette eksemplet blir verdien alpha = 10.0 aldri brukt.

Hva er hensikten med å maskere globale variabler? Det kan være veldig nyttig å aksessere globale variabler inni en funksjon, f.eks. for å få tak i konstanter definert på utsiden av funksjonen. Det er likevel viktig at en funksjon kan få lov å opprette lokale variabler uten tanke på om det finnes globale variabler med samme navn Det sikrer at funksjonen fungerer i enhver sammenheng, uavhengig av hvilke globale variabler som måtte bli definert.

Endre globale variabler inni en funksjon Anta at vi ønsker å endre verdien til en global variabel fra innsiden av en funksjon. Ikke så lett som en skulle tro: x = 10 def f(y): x = 5 # Vi prøver å endre den globale variabelen x return x + y print(x) # Skriver ut '10' print(f(0)) # Skriver ut '5' print(x) # Skriver ut '10' (den globale variabelen x er fortsatt 10 Forsøket på å endre en global variabel fra innsiden av en funksjon feilet, fordi vi i stedet definerte en ny lokal variabel x når vi utførte x=5.

Endre global variabler inni en funksjon (2) Hvis du virkelig ønsker å endre en global variabels verdi fra innsiden av en funksjon, må du deklarere variabelen som global Sjelden behov for å gjøre dette! Eksempel: x = 10 def f(y): global x x = 5 return x + y # Denne sider: ikke lag en lokal variabel x # Nå endrer vi den globale variabelen x print(x) # Skriver ut '10' print(f(0)) # Skriver ut '5' print(x) # Skriver ut '5' (dvs den globale variabelen er endret)

Eksempel: beregn en funksjon definert som en sum Denne funksjonen approksimerer ln(1 + x) for x 1: L(x, n) = n i=1 1 i ( x ) i 1 + x Python funksjon: def L(x,n): s = 0 for i in range(1, n+1): s += (1.0/i)*(x/(1.0+x))**i return s Eksempel på bruk: import math x = 5.0 print (L(x, 10), L(x, 100), math.log(1+x))

Hvor feil er svaret fra funksjonen L(x, n)? Anta at vi ønsker å returnere mer informasjon om løsningen: Første ledd i summen som ikke er tatt med Feilen (ln(1 + x) L(x; n)) def L2(x,n): s = 0 for i in range(1, n+1): s += (1.0/i)*(x/(1.0+x))**i first_neglected_term = (1.0/(n+1))*(x/(1.0+x))**(n+1) import math exact_error = math.log(1+x) - s return s, first_neglected_term, exact_error # Typisk kall: x = 1.2; n = 100 value, approximate_error, exact_error = L2(x, n)

Nøkkelord (keyword) argumenter Når vi definerer en funksjon kan vi oppgi default-verdier for en eller flere argumenter. Eksempel: def printall(x, y, z=1, w=2.5): print(x, y, z, w)

Eksempler på kall på funksjoner med nøkkelverdi-argumenter >>> def somefunc(arg1, arg2, kwarg1=true, kwarg2=0): >>> print (arg1, arg2, kwarg1, kwarg2) >>> somefunc('hello', [1,2]) # Dropp kwarg1 og kwarg2 Hello [1, 2] True 0 # Bruk default-verdier >>> somefunc('hello', [1,2], kwarg1='hi') Hello [1, 2] Hi 0 # kwarg2 har default verdi >>> somefunc('hello', [1,2], kwarg2='hi') Hello [1, 2] True Hi # kwarg1 har default verdi >>> somefunc('hello', [1,2], kwarg2='hi', kwarg1=6) Hello [1, 2] 6 Hi # Angi alle argumenter