Python: Funksjoner og moduler Kapittel

Like dokumenter
Python: Funksjoner og moduler Kapittel

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

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

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

Auditorieøvingstider for alle linjer er postet på forsiden av wikien (under «Siste nytt»). Studenter som ikke kan møte til oppsatt tidspunkt, kan

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

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

YouTube-kanal ITGK. Læringsmål og pensum

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Oppsummering fra sist

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Øvingsforelesning i Python (TDT4110)

Øvingsforelesning 1 Python (TDT4110)

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

Løse reelle problemer

Læringsmål og pensum. if (be): else (not_to_be):

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

Løse reelle problemer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Objektorientert programmering i Python

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

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

IN1000 Obligatorisk innlevering 7

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Øvingsforelesning 5 Python (TDT4110)

MAT-INF 1100: Obligatorisk oppgave 1

Øvingsforelesning 5 Python (TDT4110)

Øvingsforelesning i Python (TDT4110)

Kapittel 1 En oversikt over C-språket

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

TDT4110 IT Grunnkurs Høst 2015

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Repetisjon Novice Videregående Python PDF

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

MAT-INF 1100: Obligatorisk oppgave 1

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning 3 Python (TDT4110)

Læringsmål og pensum. v=nkiu9yen5nc

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

INF109 - Uke 1b

Hvordan løse problemer med programmering?

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Mattespill Nybegynner Python PDF

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

TDT4110 IT Grunnkurs Høst 2016

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

INF120: Oblig 3. Yngve Mardal Moe

TEKSTSTRENGER GRUNNLEGGENDE STRENGOPERASJONER. 2 TESTING, SØKING OG MANIPULERING AV TEKSTSTRENGER. 3 FORMATTERING. 5 BETINGEDE KONTROLLSTRUKTURER.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Kap 2: Løkker og lister

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å.

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

TDT4110 IT Grunnkurs Høst 2016

Python: Strenger 3. utgave: Kapittel 8

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

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning i Python (TDT4110)

Steg 1: Rest etter divisjon

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

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

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

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Øvingsforelesning 9 i Python (TDT4110)

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Verden. Steg 1: Vinduet. Introduksjon

Hjemmeeksamen 2 i INF3110/4110

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4105 IT Grunnkurs Høst 2016

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

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Innleveringsoppgave 1

Del 1 En oversikt over C-programmering

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler Kap 5: Egne moduler + et større eksempel Kap. 7

Læringsmål og pensum. Designe et program

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

Steg 1: Tekst på flere linjer

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

Finne ut om en løsning er helt riktig og korrigere ved behov

UNIVERSITETET I OSLO

Transkript:

Python: Funksjoner og moduler Kapittel 5.7-5.10 TDT4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum Mål Kunne lage og kalle funksjoner med returverdi Bruke bibliotek i Python, f.eks random og math Vite hvordan vi oppnår gjenbruk av funksjoner Pensum Starting out with Python: Chapter 5.7-5.10 / 6 Value-Returning Functions and Modules

Hvorfor trenger vi dette? Slippe å skrive om igjen kode som allerede er laget! Sentralt problem: funksjoner må kommunisere med resten av programmet Tre mulige løsninger 1. Ingen vesentlig kommunikasjon Funksjonen leser selv sine inndata med input ( ) Funksjonen skriver selv ut resultat med print( ) 2. Via globale variable Like før kallet må inndata til funksjonen puttes i en eller flere globale variable Når funksjonen har beregnet resultat puttes det i en annen global variabel, programmet kan da bruke denne verdien videre 3. Via parametre (inndata til funksjon) og returverdi (resultat) 3

Hvorfor trenger vi dette? Slippe å skrive om igjen kode som allerede er laget! Sentralt problem: funksjoner må kommunisere med resten av programmet Tre mulige løsninger 1. Ingen vesentlig kommunikasjon Funksjonen leser selv sine inndata med input ( ) Funksjonen skriver selv ut resultat med print( ) 2. Via globale variable DÅRLIG Like før kallet må inndata til funksjonen puttes i en eller flere globale variable Når funksjonen har beregnet resultat puttes det i en annen global variabel, programmet kan da bruke denne verdien videre 3. Via parametre (inndata til funksjon) og returverdi (resultat) 4

Eksempel på dårlighet og godhet Vi vil lage en funksjon som beregner absoluttverdi: x = x hvis x>=0, x = x hvis x<0 Trenger egentlig ikke lage, abs() fins innebygget men bare for illustrasjon Vi trenger f.eks en slik funksjon i forbindelse med statistisk analyse av lang liste med svar fra en spørreundersøkelse Dårlig løsning 1: input og print i funksjonen Dårlig løsning 2: globale variable Bedre løsning: parametre og return kode: abso_v0.py v1 v2 5

Intro til returverdifunksjoner: Generering av tilfeldige tall Kapittel 5.7

Standard Library-funksjoner og import-uttrykket (forts.) En funksjon i et bibliotek en svart boks vi kan bruke funksjonen uten å se inne i boksen vi har allerede brukt flere standardfunksjoner i Python uten å vite hvordan de ser ut innvendig, for eksempel print( ) input( ) range( ) capitalize( ) 7

Å generere tilfeldige tall Tilfeldig genererte tall, mulige bruksområder Spill og simuleringer Statistiske analyser random-modulen: biblioteksfunksjoner for tilfeldige tall «Dot notation»: kalle en moduls funksjoner: Format: module_name. function_name() Eksempler: random.random() # tilfeldig flyttall [0.0,1.0> random.uniform(fra,til) #tilfeldig flyttall [fra, til> random.randint(fra,til) # tilfeldig heltall [fra,til] random.randrange(fra,til,steg) # velger ett tall fra serien [fra, fra+steg, fra+2*steg,, til> 8

Å generere tilfeldige tall (forts.) Retur av verdi fra random-funksjon: Vise et tilfeldig tall i konsollet vha. randomfunksjon:

Seeds for tilfeldige tall Random-funksjonene er pseudo-tilfeldige tall Liksom-tilfeldighet, maskinen gjør aldri noe helt tilfeldig Mål: så likt en tilfeldig tallrekke som mulig Realistiske simuleringer / statistiske analyser Uforutsigbarhet i lotterier / pengespill Variasjon i dataspill Seed-verdi: initialiserer formelen som genererer de tilfeldige tallene Forskjellige seeds gir forskjellige serier med tilfeldige tall Default-verdien for seeds er systemtiden funksjonen random.seed() kan sette seed-verdi hvis du ikke er fornøyd med å bruke tiden 10

Skrive egne funksjoner med returverdi Kapittel 5.8

IPO-kart Verktøy for å designe og dokumentere funksjoner Inndata Prosessering Output Typisk presentert i kolonner Korte beskrivelser uten å gå i detalj Inkluderer ofte nok informasjon til å erstatte et flytdiagram Annet alternativ: kommentarer i koden # INPUT: # PROCESSING: # OUTPUT: plassert like under funksjonshodet 12

Eksempel på IPO-kart DISCOUNT_PERCENTAGE = 0.20 def discount (price): discount = price * DISCOUNT_PERCENTAGE return discount

Oppbygning av en funksjon. Når man definerer/lager en funksjon bruker man det reserverte ordet def All koden i funksjonen (kroppen) skrives i innrykk. Avslutter med return (når noe skal returneres) Navn på funksjon Parametere def funksjonsnavn (para1, para2, para3): kode kode return uttrykk Funksjonskropp Avslutning 14

Å returnere boolske verdier Boolsk funksjon: returnerer enten True eller False Typiske Bruksområder teste et kriterium for beslutninger (if, while ) forenkle sjekk av inndata for gyldighet spørre om verdier returnere True hvis inndata er en lovlig verdi 15

Oppgave: Boolsk funksjon Lag funksjonen overlapp_intervall(a,b,c,d) Gitt intervallene (a,b) og (c,d): overlapper de hverandre? Returnere True hvis overlapp, ellers False Om ett begynner der det andre slutter: ikke overlapp Bruk parametre og returverdi IKKE global variabel, IKKE input og print i funksjonen kode: overlapp_intervall_v1.py v2 v3 c d a True b True True False 16

Returnere flere verdier I Python kan en funksjon returnere flere verdier Spesifisert etter return-uttrykket, atskilt av kommaer Format: return uttrykk1, uttrykk2, etc. Antall variable i kallet må stemme, dvs. En variabel på venstresiden av = for hver returnert verdi: def get_name(): first_name=input("first name? ") last_name=input("last name? ") return first_name, last_name first_name, last_name = get_name() 17

Modulen math Modulen math: inneholder Funksjoner for å utføre matematiske beregninger Matematiske konstanter som pi og e Bruk av modulen: må ha skrevet import math Eller: from math import funksjonsnavn # de funksjonene vi trenger Eller: from math import * # alle funksjoner Kalle funksjon, for eksempel y = math.sin(x) Bruke konstant, for eksempel omkr = 2 * math.pi * r Vi kan slippe å skrive math. foran sin og pi hvis vi brukte Enten from math import sin, pi Eller from math import * 18

Noen funksjoner i modulen math:

Lagre funksjoner i moduler Kapittel 5.10

Å lagre funksjoner i moduler Modul : fil som inneholder Python-funksjoner Programmer kan importere modulene og kalle funksjonene import modulnavn Filnavn for modul skal slutte med.py Ikke nøkkeluttrykk i Python (if.py, while.py, ) Hvorfor moduler?: gruppere relaterte funksjoner program blir lettere å forstå, teste og vedlikeholde nyttige funksjoner kan brukes i mange program EKSEMPEL: overlappende_intervall() som vi nettopp lagde stor generell bruksverdi La oss putte den i en modul! kode: intervall.py bruk: booking.py 21

Bruk av overlapp_intervall() Overlappende rektangler Gitt to rektangler parallelle med x- og y-aksen: Overlapper de? Lag en funksjon som sjekker dette! 8 parametre, x1,y1, x2,y2, x3,y3, x4,y4 (x1,y1) og (x2,y2) er koordinatene for nedre venstre og øvre høyre hjørne i ett rektangel (x3,y3) og (x4,y4) er tilsvarende koordinater for det andre rektanglet Dette er ganske tricky! Ligner på oppgave 2d, eksamen i TDT4102 (C++), juni 2015 Potensielt jobbintervjuspørsmål Blir vesentlig enklere med gjenbruk av overlapp_intervall( ) Bare vi skjønner hvordan vi skal bruke den kode: overlapp_rektangel_halvferdig.py _ferdig.py ; _import.py 22

Oppsummering (1) Dette kapittelet dekket: Returverdifunksjoner, inkludert Å skrive returverdifunksjoner Å bruke returverdifunksjoner Å returnere flere verdier fra en funksjon Å bruke bibliotekfunksjoner og import-uttrykket Moduler, inkludert Modulene random og math Å gruppere dine egne funksjoner i moduler 23

Oppsummering (2), mange slags funksjoner Uten returverdi - eksempel: - hvordan kalle? Tilsvarer hel setning Med returverdi - eksempel: - hvordan kalle? Tilsvarer en verdi Hva må skrives lenger oppe i programmet? Innebygde I bibliotek Egendefinerte print( ) color() abso_v0() print( Hei! ) turtle.color( red ) abso_v0() abs() input() a=input( Tall? ) print(abs(a)) ingenting random() sin() x=random.random() y=math.sin(x)/2 import turtle import random import math eller from import * (slippe prefiks ved kall) abso_v2() x=abso_v2(-5.1) def funknavn(par): setninger. #hvis returverdi return verdi 24

Neste uke: Lister og tupler (kap 7) Aktuelle spørsmål for quiz: «What will the following code display?» (Checkpoint 7.1) «What will the following code display?» (Checkpoint 7.2) «What will the following code display?» (Checkpoint 7.3) «What will the following code display?» (Checkpoint 7.4) «What will the following code display?» (Checkpoint 7.5) «What will the following code display?» (Checkpoint 7.6) «What will the following code display?» (Checkpoint 7.8) «What will the following code display?» (Checkpoint 7.11) «What will the following code display?» (Checkpoint 7.14) «Give two reasons why tuples exist» (Checkpoint 7.23) «This is the last index in a list» (Review, Multiple Choice 4) «Which of the following statements create a tuple» (Review, Multiple Choice 14) «What will the following code display?» (Review, Short Answer 1) «What does the following code display?» (Review, Short Answer 5) «What will the following code print?» (Algorithm Workbench 7) Noen av disse gis i «kahootisert form» Pluss 1-2 helt uannonserte spørsmål, men også om funksjoner 25