Python

Fra TermvaktWiki
Gå til: navigasjon, søk

Denne siden handler om programmeringsspråket Python. Ser du etter rommet med samme navn, se romnavn.

Python er et programmeringsspråk og er mye brukt i realfagskurs på UiO, blant annet i INF1100. I Python finner du et stort standardbibliotek. Python er ferdig installert på alle maskinene på termstuene. (Merk at når du starter Python ved å skrive python i en terminal, så er det /local/bin/python som kjøres, med mindre det har blitt justert miljøvariable. Alternativet /snacks/bin/python er en nyere versjon som kan benyttes, dersom det er behov for det).

Innhold

Komme igang med å programmere i Linux

Det er enkelt å lage sitt første Python-program på en av Linuxmaskinene ved UiO.

  • Det første du gjør er å starte en editor, som f.eks emacs eller vim.
  • På tide å bli kreativ! Skriv inn programkoden i editoren. Prøv for eksempel med dette programmet:
print "Hello world!"
  • Lagre filen som test.py.
  • Kjør programmet fra terminalen:
$ python test.py

Om alt gikk etter planen vil terminalvinduet ditt se omtrent slik ut:

Python ok.png

Utviklingsprosessen kan kort oppsummeres slik:

  1. Gjør endringer i programkoden din.
  2. Lagre endringene.
  3. Kjør programkoden.
  4. Gå til punkt 1 og gjenta til du har et program som fungerer som ønsket.

Prøv gjerne å kjøre noen flere eksempler på Python-programmer.

Hvis man dropper filnavn og bare skriver følgende i terminalen:

$ python

Vil et python-shell åpnes. I dette shellet vil all pythonkode automatisk utføres. Det er kjekt å ha når man lærer fordi man lett kan teste ut ting som for eksempel hvordan for-løkker virker, eller hvordan listeindekser fungerer:

Python 2.7.2 (default, Jul 15 2011, 14:40:47) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> liste = [a,b,c,d]
>>> liste
['a', 'b', 'c', 'd']
>>> liste[1]
'a'
>>> liste[-1]
'd'

Shellet kan også brukes til å kjapt vise informasjon om forskjellige moduler, her er et eksempel med help(random.randint):

>>> import random
>>> help(random.randint)
Help on method randint in module random:
randint(self, a, b) method of random.Random instance
   Return random integer in range [a, b], including both end points.

Komme i gang med å programmere i Windows

Hvis du ikke har Python installert kan du laste det ned fra hjemmesidene til Python.

For å starte Python, trykk på Windows-knappen, skriv så idle og trykk Enter:

Py win.png


Da får du opp et vindu som heter Python Shell. Trykk så på File -> New. Dette åpner et nytt vindu hvor du skriver inn programmet ditt:

Py shell.png


Når du har skrevet inn programkoden din, så trykker du på F5 på tastaturet og programmet ditt vil kjøre:

Py new.png

  • Den første gang du kjører programmet vil du bli spurt om å lagre det først.


Output fra programmet ditt kommer frem i Python Shell-vinduet:

Py shell help example.png

Kommentarer til skjermbildene over:

  • Alt du skriver i shellet blir automatisk utført, som du ser når du skriver: 2+6.
  • Shellet kan brukes til å kjapt vise informasjon om forskjellige moduler, dvs: help(random.randint)
  • I det du skriver inn navnet på en metode får du informasjon om type og antall argumenter metoden trenger.
  • Ikke glem å importere modulene før du skal bruke dem, dvs: from random import randint.

Installasjon av Python og SciTools

Ubuntu

Hvis du har en nyere versjon av Ubuntu (Lucid Lynx eller nyere) er pakkene du trenger allerede tilgjengelig, og det skal holde å skrive:

sudo apt-get update
sudo apt-get install python-scitools python-matplotlib dvipng gnuplot gnuplot-x11 python-gnuplot

Test at scitools virker ved å starte et Python-shell i et terminalvidu (skriv bare python eller ipython) og gi følgende interaktive kommandoer:

from scitools.std import * 
x = linspace(0, 3*pi, 101)
y = sin(x)
plot(x, y)

Har du problemer, kontakt gruppelæreren. Husk å ta med PC og ha demonstrasjonen over klar med alle feilmeldinger lett tilgjengelig på skjermen.

SciTools kan bruke ulike programmer for å lage plot. Hvilket program som brukes, styres i konfigurasjonsfilen. Du kan laste ned denne filen og lagre den under navnet .scitools.cfg (merk punktum i starten av navnet) i din hjemmekatalog. En linje i .scitools.cfg styer plotteprogrammet som brukes. Du kan f.eks. endre fra

backend = matplotlib

til

backend = gnuplot

Hvis det er problemer med plotting, noe det ofte kan være, vil denne endringen kunne hjelpe.


Manuell installasjon

Om du ikke vil kjøre Ubuntu, er det mulig å installere hvert enkelt pakke manuelt. Programvaren man trenger i INF1100 dekkes av en serie programvarekomponenter som må lastes ned og installeres hver for seg - i riktig rekkefølge. Ideelt sett skulle all programvare vi bruker i INF1100 og andre kurs vært pakket sammen i en .exe-fil (for Windows) eller en .dmg-fil (for Mac), og så kunne man dobbeltklikke denne filen for å installere alt på en gang. Det viser seg å være altfor ressurskrevende å støtte og vedlikeholde slike kurs-spesifikke pakker med programvare for Windows og Mac, og derfor må man selv manuelt installere de ulike komponentene man trenger med mindre man følger Ubuntu-veiledningene ovenfor. Som nevnt anbefales Ubuntu som plattform til alle som ikke er helt med i installasjonsbeskrivelsene under (eller sagt kortere: vet du ikke hva kompilering, linking, PATH og PYTHONPATH er, så installer og bruk Ubuntu!).

Følgende programvare må installeres for INF1100:

Vi beskriver kort hvordan installasjonen bør gjøres på Windows og Mac.

Windows

I prinsippet laster du ned .exe filer og dobbeltklikker disse - i den rekkefølge programvarekomponentene er listet over. For å kjøre programmet python fra DOS-promptet, hvilket du må i INF1100, må miljøvariabelen ("environment variable") PATH inneholde rotkatalogen der Python ble installert på maskinen (f.eks. C:\python26, men dette må du sjekke nøye). Tilsvarende må katalogen der den eksekverbare filen for Gnuplot ligger, også finnes i PATH variabelen. Du setter PATH manuelt ved hjelp av systemprogramvare. numpy vil forsøke å legge seg slik at Python vet hvor den er, men det avhenger av rettigheter på systemet. Det kan tenkes du må legge rotkatalogen til numpy inn i miljøvariabelen PYTHONPATH, akkurat som når du legger til kataloger der du har dine egne moduler (se kapittel 3 i boka). Når du kjører "python setup.py install" (f.eks. for scitools), så krever dette også at du har rettigheter for å installere programvare i systemkataloger. Det er vanskelig å få all Windows programvare til å spille uten at du har innsikt i hvordan Windows installerer og hvordan du må oppdatere PATH og PYTHONPATH.

Mac

Selv om det finnes .dmg filer for de fleste programvarekomponenter til INF1100, er det vår erfaring at det kan oppstå problemer hvis man bruker disse ferdigkompilerte filene. Vi anbefaler at man laster ned tarfiler (.tar.gz, .tgz), pakker dem ut i et terminalvindu med tar og følger instruksjonene i INSTALL eller README filene. Du må installere Xcode først slik at du har C og Fortran kompilatorer siden disse trengs for å bygge numpy og Gnuplot. Du bør ha solid erfaring med kompilering og linking, samt sette miljøvariable som PATH og PYTHONPATH, i .bashrc filen, før du begir deg ut på å installere programvaren på Mac.

Fink på Mac OS X

Om du kjører Mac OS X og har Fink installert, vil følgende kommando installere all nødvendig programvare unntatt SciTools:

fink install python27 scientificpython scipy-py27 gnuplot gnuplot-py27 matplotlib-py27 ipython-py27 sympy-py27

SciTools installeres i henhold til installasjonveiledningene til SciTools (se Sources-avsnittet). Vi anbefaler ikke å bruke Fink med mindre du har tidligere erfaring med dette verktøyet. Et nyere alternativ er Homebrew. Problemer med inkompatible versjoner oppstår fort med begge verktøyene, så det er viktig med god forståelse for pakkefilosofien i Fink eller Homebrew.

Eksempler

Her noen programkodeeksempler som du kan teste.

Be om input og skriv ut svar

inn = raw_input("RF-kjelleren?")
if inn == "ja":
  print "Sees der!"
else:
  print ":("

99 Bottles of Beer on the Wall

for quant in xrange(99, 0, -1):
  if quant > 1:
     print quant, "bottles of beer on the wall,", quant, "bottles of beer."
     if quant > 2:
        suffix = str(quant - 1) + " bottles of beer on the wall."
     else:
        suffix = "1 bottle of beer on the wall."
  elif quant == 1:
     print "1 bottle of beer on the wall, 1 bottle of beer."
     suffix = "no more beer on the wall!"
  print "Take one down, pass it around,", suffix
  print "--"

Installasjon

Om du vil installere Python på din egen maskin er det en enkel sak. I Ubuntu holder det å skrive følgende i terminalen.

sudo apt-get install python python-doc

Da får du også tilgang til dokumentasjon til Python lokalt ved å skrive:

firefox file:///usr/share/doc/python-doc/html/index.html &

Se mer om installasjon i INF1100-artikkelen.

Fallgruver

  • Python er nøye på at koden er korrekt indentert.

Videre lesing

Python er alt for omfattende til å beskrive fullstendig i denne artikkelen. Ønsker du å lære python anbefales det å fortsette og lese videre på disse sidene:

Emner ved UiO

Ved UiO finnes det 2 emner hvor det undervises i Python.

  • INF1100 - Grunnkurs i programmering for naturvitenskapelige anvendelser.
  • INF3331 - Problemløsning med høynivå-språk.

Emnet INF5660 - Avansert problemløsning med høynivå-språk er nedlagt, men kurssiden kan fortsatt inneholde nyttig stoff.

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Kategorier
Programvare
Andre
Translate
Verktøy