INF109 - Uke 1a 19.01.16 NOTE: Download the latest version of python: 3.5.1. 1 Introduksjon 1.1 Goodbye world! For å komme i gang, start IDLE fra Start Programs Python3.5.1 IDLE. (Varierer litt fra datamaskin til datamaskin.) Det første du ser er noe som: Python 3. 2. 3 ( d e f a u l t, Aug 6 2012, 1 6 : 1 9 : 4 6 ) [GCC 4. 5. 1 20100924 (Red Hat 4. 5. 1 4 ) ] on l i n u x 2 Type c o p y r i g h t, c r e d i t s or l i c e n s e ( ) f o r more i n f o r m a t i o n. >>> IDLE er en integrated development environment for python og >>> indikerer at du kan skrive programsetninger etter merket. Det kalles python-skall og er èn måte å kjøre python programmer. Alt som skrives etter skallet blir direkte tolket av python. Prøv å skrive >>> og trykk enter. Lag en printsetning som skriver ut Python er greit og kursinholdet er veldig enkelt saa langt.. 2 Printsetninger Tydeligvis skriver print setningen alt på skjermen som følger. anførselstegn etter skallet og se hva som skjer. >>> p r i n t ( Goodbye World! ) Skriv samme setningen uten En syntax error betyr at python ikke forstår det du har tastet inn og avbryter bearbeidingen av programmet. Det er èn mulig feil som skjer spesielt ofte i begynnelsen. Trykk <Alt-p> samtidig for å gjenta siste program anvisning og rett feilen. For å styre utskriften kan man legge inn spesialtegn. Prøv >>> p r i n t ( to \n ord ) 1
Hvilken effekt har \n i print setningen? Prøv også følgende styretegn (uten i begynnelsen): \t \ \ \\ og beskriv effekten. Prøv også å bruke t,, og \ uten førende backslash. (F. eks. print( Dette er \ en test.) Når du skriver ut to \n ord så er det et ekstra mellomrom i andre linje. Prøv å skrive ut det samme men ord på andre linje uten ekstra mellomrom i begynnelsen. Lag en printsetning som skriver ut Styretegn er i n t e r e s s a n t naar du v i l l a g e t a b e l l e r med en gang. 3 Mer om IDLE og filer Hittil har du lært hvordan enkle print setninger lages, men hvis du vil bruke dem igjen må du taste alt inn igjen. For gjenbruk lagrer vi programmer i filer heretter. Åpne nytt editeringsvindu ved File New Window og skriv inn: p r i n t ( F l e r e ) p r i n t ( p r i n t ) p r i n t ( s e t n i n g e r. ) Lagre filen med navnet print eksempler.py med File Save. Kjør programmet med Run Run Module overst i vinduet. Alt som er i filen blir overført til python skallet og utført av python (du kan også bare trykke F5). Hvis du ikke bruker IDLE men f.eks. Windows Editor så kan du importere programmet inn i skallet ved bruk av >>> import p r i n t e k s e m p l e r Etter import blir alt som er skrevet i filen utført av python. Det er viktig at filnavnet slutter med.py. I visse tilfeller må du også skrive følgende linje først i filen # coding : utf 8 som forteller python-fortolkeren hvordan tegnene i filen er kodet. 2
4 Metoder For å gjenbruke deler av programmet bruker vi blant annet metoder. Anta at du vil skrive ut setningen Goodbye World! flere ganger. Vi kan definere en metode hei(): >>> Metoden defineres ved å skrive dette inn i skallet (du må avslutte metodedefinisjonen ved å trykke enter to ganger). Når du skriver dette direkte i skallet så kommer mellomrommet automatisk etter kolonet. Den blanke plassen er vanligvis èn tabulator og alt som er rykkt inn på den samme måten, eller med det samme avstand til venstre, hører til den samme blokk. Alt som er i den samme blokken etter metodehodet hører derfor til metoden. Alternativt kan metodedefinision leses som definere en metode som heter hei uten parameter 1 og utføre alt i blokken etter kolonet når funksjon blir kjørt. Når du skriver definisjonen av metoden skriver dette alene ikke noe ut. Du må kjøre metoden etter du har definert den for å se hva metoden gjør. Metoden blir kjørt med >>> h e i ( ) i skallet. Lag en ny fil med navnet metodetest.py og definer metode hei() i den. Etter at du har definert den, kjør filen og overfør metoden til pythonskallet. Prøv nå om metoder fungerer korrekt ved å kjøre den. Lag en ny fil med navnet metodetest2.py og innhold: Og en fil med navnet metodetest3.py og innhold: Hva skjer når du kjører metodetest2.py filen med Run Module? Hva skjer når du kjører metodetest3.py? Hva er forskjellen mellom å kjøre hei() metoden fra første filen og hva andre? Og hvorfor? Modifiser metoden fra metodetest.py slik at den skriver ut Flere print setninger. som oppgaven oppe, et ord hver linje med 3 print setninger. Pass på at alle 3 print setninger er i den samme blokken. Når du importerer en fil med import som beskrevet tidligere så kan du ikke utføre metoden direkte. Du må kjøre metoden med modulnavnet (som er det samme som filnavnet for oss nå). F.eks. når du importerer metodetest.py kan du kjøre hei() på den følgende måte: >>> import metodetest >>> metodetest. h e i ( ) 1 Parameter lærer du senere i kurset. 3
5 Kommentarer Når du skriver et program så er det veldig viktig å kommentere hva du gjør. Ikke bare for deg når du leser programkoden ett år senere og ikke vet hva du har gjort der uten kommentarere, også når noen andre leser koden din og prøver å forstå den. En kommentar i python begynner med # og avsluttes ved enden av linjen. # Dette programmet s k r i v e s ut Goodbye World! og Foobar. #Her kommer andre l i n j e #Metoden s l u t t e r her h e i ( ) #Metoden b l i r u t f o e r t Når det er åpenbart hva metoden gjør så trenger du ikke skrive noen kommentarer men programkode blir veldig raskt uoversiktlig. Inkluder kommentarer i programmene du har skrevet hittil. 6 Aritmetikk Du kan bruke pythonskallet som kalkulator. Hvis du skriver inn et regnestykke blir resultatet beregnet for deg. >>> 3 5 15 >>> (2+4) 3 18 For å inkludere dette i en print setning kan du gjøre dette som i følgende eksempel: >>> p r i n t ( 3 5=,3 5) 3 5= 15 >>> p r i n t ( (2+4) 3=,(2+4) 3) (2+4) 3= 18 Ikke glem komma mellom tekst og regnestykke. 7 Øvelser Lag et enkelt program som skriver ut 5 kg der 5 ikke er skrevet mellom anførselstegn. Følgende program skal egentlig skrive ut 4
There has never been an unexpectedly s h o r t debugging p e r i o d in the h i s t o r y o f computers. Steven Levy når metoden quote() er kjørt men innholder to feil. Finn og rett feilene. def quote ( ) : p r i n t ( There has never been an unexpectedly ) p r i n t ( s h o r t debugging period in the ) p r i n t ( h i s t o r y o f computers. \ nsteven Levy ) Følgene programmet inneholder en metode solve() som løser annengradsligningen 2x 2 + 3x 2 = 0. Skriv om metoden slik at den istedenfor løser annengradsligningen x 2 6x+5. # Dette programmet l o e s e r en a n n e n g r a d s l i g n i n g. # Legg merke t i l bruk av komma f o r aa f a a a l l u t s k r i f t paa en l i n j e. import math # Henter inn matte b i b l i o t e k e t ( t r e n g s f o r kvadratrot ) d e f s o l v e ( ) : p r i n t ( Loesningen t i l 2. g r a d s l i g n i n g e n 2x 2 + 3x 2 = 0 er, x =, ( 3 + math. s q r t (3 3 4 2 ( 2)))/(2 2), og, x =, ( 3 math. s q r t (3 3 4 2 ( 2 ) ) ) / ( 2 2 ),. ) 5