Python Installering og et par enkle anvendelser



Like dokumenter
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 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Forkurs i informatikk Python. Andreas Færøvig Olsen

Læringsmål og pensum. v=nkiu9yen5nc

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

INF109 - Uke 1a

Kom i gang med Stata for Windows på UiO - hurtigstart for begynnere

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Mattespill Nybegynner Python PDF

ITGK - H2010, Matlab. Repetisjon

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

Matematikk Øvingsoppgaver i numerikk leksjon 3 Funksjoner og plotting

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

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

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

UNIVERSITETET I OSLO

Python: Funksjoner og moduler Kapittel

Matematikk Øvingsoppgaver i numerikk leksjon 3 Skript

Kom i gang med Python

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

TDT4110 IT Grunnkurs Høst 2016

Introduksjon til Jupyter Notebook

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

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

Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2.

MEK1100, vår Obligatorisk oppgave 1 av 2. Torsdag 28. februar 2019, klokken 14:30 i Devilry (devilry.ifi.uio.no).

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

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

Øvingsforelesning i Python (TDT4110)

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

TDT4110 IT Grunnkurs Høst 2016

Sprettende ball Introduksjon Processing PDF

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

Forside. 1 Hva skrives ut?

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

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

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

Python: Funksjoner og moduler Kapittel

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

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?

Hangman. Level. Introduksjon

Et lite oppdrag i bakgrunnen

Løse reelle problemer

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

INF109 - Uke 1b

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

Øvingsforelesning i Python (TDT4110)

Introduksjon til numerisk løsning av Schrödingers ligning med Python

Øvingsforelesning 1 Python (TDT4110)

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

MAT-INF 1100: Obligatorisk oppgave 1

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

INF120: Oblig 3. Yngve Mardal Moe

wxmaxima Brukermanual for Matematikk 1T Bjørn Ove Thue

Del 1. Generelle tips

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

Kanter, kanter, mange mangekanter

TDT4110 IT Grunnkurs Høst 2015

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

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

MAPLE-LAB La oss utføre en enkel utregning.

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 35

Hvordan lage kontrolldiagrammer legge inn tall i Epidata. Eksempel I-diagram

UNIVERSITETET I OSLO

Dette kan selvfølgelig brukes direkte som en numerisk tilnærmelse til den deriverte i et gitt punkt.

TDT Datateknologi, programmeringsprosjekt

Øvingsforelesning i Matlab TDT4105

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

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

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

Steg 1: Regneoperasjoner på en klokke

Øving 5 - Fouriertransform - LF

IN1000 Obligatorisk innlevering 7

UNIVERSITETET I OSLO

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

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Enkel plotting i LibreOffice/OpenOffice og Excel

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

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

Fra Python til Java, del 2

Opphavsrett: Forfatter og Stiftelsen TISIP

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

PGZ - Hangman Ekspert Python Lærerveiledning

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

Installasjonsveiledning. DDS-CAD ByggMester

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

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.

Transkript:

Python Installering og et par enkle anvendelser 1. Gå til www.pyzo.org/downloads.html 2. Last ned, og installer pyzo for ditt operativsystem (Windows, Linux, OSX): På Windows kan du laste ned og kjøre installeren, eller laste ned og pakke ut.zip filen. På Mac monterer du.dmg filen, og kopierer innholdet til user-mappen din. På Linux pakker du ut innholdet i.tar.gz filen. 3. Start programmet: Hvis du brukte installeren for Windows, starter du programmet ved å dobbeltklikke på pyzo-ikonet på skjermen. Installerte du ved å kopiere en mappe, starter du programmet ved å dobbeltklikke på filen pyzo, i mappen du kopierte. Når programmet har startet, burde det se slik ut Figur 1: Windows skjermbilde etter oppstart av pyzo. Skjermen har tre hovedområder (markert med grønt rektangel): 1. Kommandovinduet. 2. Editoren. 3. Filutforskeren. Du kan nå begynne å skrive inn python-kommandoer på kommandolinja i kommandovinduet, f.eks: In [1]: 2+2 Out[1]: 4 In [2]: 7**(0.5) Out[2]: 2.6457513110645907 Dvs, python kan brukes som en enkel kalkulator. Som regel ønsker vi å skrive et program

og lagre dette i ei fil. 4. Nå kan du skrive inn python-kommandoer i vinduet øverst, f.eks: 1 a = 6 2 b = 7 3 answer = a*b 4 print(answer) Velg File - Save As og lagre programmet (dvs disse fire kommandoene) med et filnavn (som du velger selv) og extension.py (som er nødvendig for at python skal skjønne at det er et python-program), f.eks python1.py. Nå kan programmet kjøres (dvs de fire kommandoene utføres, en etter en) ved å velge (Run - Execute file). I kommandovinduet får du nå In [3]: (executing lines 1 to 4 of python1.py ) 42 Med andre ord, python tar inn kommandoen kjør python1.py. Der settes variablene a og b lik hhv 6 og 7, variabelen answer settes lik produktet mellom a og b, dvs 42, og til slutt skrives verdien av answer ut til standard output (som her er vinduet nederst) med kommandoen print. 5. Du ser allerede nå at python forstår en god del matematikk uten videre, f.eks at + betyr addisjon og at ** betyr opphøyd i. Hva med litt mer avanserte matematiske funksjoner som f.eks sinus og cosinus? La oss prøve. Lag ei ny fil med File - New. Den heter i utgangspunktet <tmp 2>, så lagre den like godt som python2.py med det samme. Skriv inn de tre linjene 1 a=1.5708 2 b=sin(a) 3 print(b) og lagre. Med forventning om at python skal returnere et tall i nærheten av 1 velger vi Run - Execute file. Skuffelsen er kanskje stor når python returnerer Traceback (most recent call last): File /Documents/Arbeid/Python notat/python2.py, line 2, in <module> b=np.sin(a) NameError: name sin is not defined Python skjønner med andre ord ikke uten videre hva kommandoen sin betyr. Vi må importere biblioteket numpy ved å inkludere kommandoen 1 import numpy as np som første linje i programmet. Dessuten må vi fortelle python at funksjonen sin skal hentes i numpy-biblioteket, som vi nå har gitt kortnavnet np: 3 b=np.sin(a)

Hele programmet blir seende slik ut: 1 import numpy as np 2 a=1.57 3 b=np.sin(a) 4 print(b) Nå går det mye bedre! Run - Execute file gir oss i kommandovinduet: In[5]: (executing lines 1 to 4 of python2.py ) 0.999999999993 Biblioteket numpy (numerical python) inneholder de fleste matematiske funksjoner som du kan tenke deg å få bruk for. I tillegg legger det til rette for å utføre operasjoner på hele tabeller (og matriser) med tall i en smekk. Vi skal se at det er svært nyttig. (Det finnes også et bibliotek som heter math, som vi alternativt kunne ha importert i stedet for numpy, men da hadde vi ikke fått med oss tabell-funksjonaliteten på kjøpet, slik vi gjør med numpy.) 6. Vi har rett som det er behov for å framstille våre resultater ved å plotte en eller flere funksjoner (grafer). Da må vi først importere modulen pyplot fra biblioteket matplotlib. Vi importerer også numpy, slik at vi kan lage tabeller med tall: 1 import matplotlib.pyplot as plt 2 import numpy as np La oss ta et konkret eksempel: Vi ønsker å plotte funksjonen cos(x) på intervallet 0 < x < 2π. Vi lager da først en tabell x med et antall verdier, f.eks 100, mellom 0 og 2π: 3 x = np.linspace(0,2*np.pi,100) Med andre ord, x = np.linspace(start,slutt,antall) medfører at x blir en tabell med antall elementer, slik at 1. element får verdien start, siste element får verdien slutt, og resten av elementene er jevnt fordelt mellom start og slutt. Med kommandoen 4 y = np.cos(x) blir y nå automatisk en tabell med like mange elementer som x, dvs 100, og slik at 1. element får verdien cos(0) = 1 og siste element får verdien cos(2π) = 1. Nå kan vi plotte y(x) med kommandoene 5 plt.figure() 6 plt.plot(x,y) 7 plt.show() der nr 7 er nødvendig for å få opp figuren på skjermen. Skriv disse 7 linjene og lagre programmet i fila python3.py. Kjøring av programmet gir figur 2. Vi kan pynte på figuren (der de ulike kommandoene bør tale for seg): 7 plt.title( Cosinusfunksjonen )

1.0 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 Figur 2: Plotting av cos(x) med kommandoene plot og show fra modulen pyplot i matplotlib. 8 plt.xlabel( x ) 9 plt.ylabel( cos(x) ) Figuren blir da som i figur 3. 1.0 Cosinusfunksjonen 0.5 cos(x) 0.0 0.5 1.0 0 1 2 3 4 5 6 7 x Figur 3: Plotting av cos(x), med tittel og akseangivelser. Enda penere ser det ut hvis vi avgrenser x-aksen til 2π, øker fontstørrelsen til 20, og i tillegg bruker dollartegn og \ (L A TEX-stil) for å få korrekte fonter i matematiske uttrykk: 8 plt.xlabel(r $x$,fontsize=20) 9 plt.ylabel(r $\cos(x)$,fontsize=20) 10 plt.xlim(0,2*np.pi) Merk r en foran strenger med L A TEX-kommandoer. Hele programmet blir: 1 import matplotlib.pyplot as plt 2 import numpy as np 3 x=np.linspace(0,2*np.pi,100) 4 y=np.cos(x) 5 plt.figure() 6 plt.plot(x,y)

7 plt.title( Cosinusfunksjonen,fontsize=20) 8 plt.xlabel(r $x$,fontsize=20) 9 plt.ylabel(r $\cos(x)$,fontsize=20) 10 plt.xlim(0,2*np.pi) 11 plt.show() Figuren blir da som i figur 4. 1.0 Cosinusfunksjonen 0.5 cos(x) 0.0 0.5 1.0 0 1 2 3 4 5 6 x Figur 4: Ganske pent plott av cos(x). Oppgave Lag en figur som plotter y(r) = 4r 2 e 2r fra r = 0 til r = 6. Figuren skal ha tittelen Grunntilstanden 1s i hydrogen, teksten Avstand fra kjernen langs horisontal akse, og teksten Sannsynlighetstetthet langs vertikal akse. Tips: Eksponentialfunksjonen heter exp i python (som i de fleste programmeringsspråk), dvs np.exp().

Python Tips og triks Tabellindekser starter på 0, og hvert element aksesseres med []. Alle elementene i tabellen aksesseres med [:]. Negative indekser teller fra siste element, som har index -1. Eks.: Alle radene, alle unntatt 1. og siste kolonne i en 3 x 5 tabell med tilfeldige tall: from numpy.random import rand tabell=rand(3,5) utdrag=tabell[:,1:-1] Flere plott i samme figur: Når vi plotter flere grafer i samme figur, lager vi merkelapper på hver graf, og viser en oversikt med legend() kommandoen: y1=np.cos(x) y2=np.cos(2*x) plt.plot(x,y1,label=r $\cos(x)$ ) plt.plot(x,y2,label=r $\cos(2x)$ ) plt.legend(loc= best ) Strenger med L A TEX-kommandoer og vanlig tekst settes sammen med + : plt.title( Plott av + r $\cos(x)$ + og + r $\cos(2x)$ ) Variable i strenger: Heltall, flyttall og flyttall med e-notasjon settes inn for hhv. %d, %f og %e med en % etter strengen. For %f og %e kan vi sette antall desimaler til n med %.nf og %.ne. Eks π med 15 desimaler: streng=r Pi med %d desimaler: %.15f % (15,np.pi) Eks e med 25 desimaler: streng2=r e med %d desimaler: %.25f % (25.np.e) Inndele x-aksen i radianer fra 0 til 2π: plt.xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi], [0,r $\frac{\pi}{2}$,r $\pi$,r $\frac{3\pi}{2}$,r $2\pi$ ]) Funksjoner: Skal vi kjøre de samme kommandoene flere ganger i et program, er det lurt, og ryddig, å samle kommandoene i en funksjon. Kommandoene skrives på innrykkede linjer etter en linje med def, som er starten på funksjonen. Vi kan ta inn argumenter med en parentes i første linje, og returnere variable med return som siste kommando: def funksjonsnavn(a,b): c=a+b return c Funksjonen kan da kalles direkte: c=funksjonsnavn(a,b) λ-funksjoner: For kommandoer som får plass på en linje (såkalte one-liners ) kan vi enkelt lage en

funksjon med kodeord lambda og et kolontegn (:) f=lambda a,b: a+b Funksjonen kan kalles direkte slik: c=f(a,b) Vi kan importere kun de funksjonene vi trenger, i stedet for hele biblioteket: from numpy import cos,sin De importerte funksjonene kan da kalles direkte: a=sin(x) Importere egne funksjoner: Funksjonen funksjonsnavn i filen filavn.py kan, hvis den er i samme mappe, importeres og brukes enten med from filnavn import funksjonsnavn funksjonsnavn() eller med import filnavn filnavn.funksjonsnavn() Lese data fra txt-fil, hvor de n første linjene ikke inneholder data: from numpy import loadtxt data=loadtxt( filnavn.txt,skiprows=n) Standardoppsett: En ryddig og oversiktlig måte å skrive program på, er import def prog(): if name == main : prog() Linjen if name == main : sørger for at kommandoene på de påfølgende innrykkede linjer kun blir utført når vi kjører denne filen. Dvs. at de ikke blir kjørt når vi importerer denne filen fra et annet program. Execute file / Run file as script: Når vi kjører programmet med Run - Run file as script, startes python-tolkeren på nytt, dvs. alle variable blir slettet, figur-vinduer lukket osv. I tillegg endres arbeidsmappen (working directory) til den mappen programmet er lagret i. Dette gjør det lettere å finne igjen andre filer fra programmet. Når vi kjører programmet med Run - Execute file, kjører vi koden som om vi hadde skrevet den direkte, linje for linje, i kommandovinduet. Arbeidsmappen endres ikke. Dokumentasjon: For informasjon om, og dokumentasjon av numpy, matplotlib etc. er http://scipy.org/docs.html et bra sted å begynne. Generell dokumentasjon for python finnes på https://docs.python.org/3/