Grunnleggende Python

Fra Programmering

Gå til: navigasjon, søk

Python er et tolket programmeringsspråk. Det vil si at koden leses og tolkes underveis istedenfor å oversettes til maskinkode før kjøring, men det er mye optimalisering involvert som gjør at det fortsatt kjører raskt. Python er egnet som skriptingspråk, men brukes også til større, mer kompliserte systemer.

Innhold

Kjøring

For å kjøre et Python-skript bruker vi Python-tolken:

Tolken kan også kjøre i interaktiv modus, som er ypperlig til testing eller for å gjøre små, enkle oppgaver. Om man ikke angir noen kildefiler, starter Python i interaktiv modus.

I interaktiv modus kan man skrive inn de setningene man vil kjøre direkte. Ledeteksten >>> angir at du kan skrive inn en programsetning. Man kan likevel lage løkker og liknende. Om en setning ikke er fullstendig, som for eksempel løkke-setninger, angis det med en fortsettelsesledetekst ....

Utskrift og innlesing

For å skrive noe til terminalen kan du bruke print etterfulgt av en streng. Med komma kan du skille flere deler som skal skrives ut, og Python skiller disse med mellomrom:

For å lese inn noe fra brukeren kan du bruke input eller raw_input. Om du kun er interessert i å få inn tekst, er raw_input greit, men om du vil lese inn kode, må du bruke input.

Her er var en variabel, les mer om dette nedenfor.

Variabler

Variabler gir deg en mulighet til å navngi en verdi, og som navnet tilsier kan denne verdien variere. Altså kan du lage et navngitt lagringssted for en verdi. I Python opprettes en variabel ved å gi den en verdi:

a = 2

Så enkelt kan en variabel med navnet a og verdien 2 opprettes. Man kan enkelt bruke denne variabelen i f.eks. matematiske beregninger ved å bruke navnet:

a = 2
b = a * 5
print "2 * 5 =", b

Det finnes mange forskjellige typer variabler, men vanligvis trenger man ikke å bry seg så fryktelig mye om dette i Python takket være noe som kalles dynamisk typing. Når du jobber med tallvariabler, trenger du for eksempel ikke å bry deg om forskjellen på desimaltall og heltall. Når type spiller en rolle, får du en feilmelding om typen ikke passer.

a = 3.1
b = 31 / a
print "31 / 3.1 =", b

Typeomforming

Typeomforming (casting) er å endre typen til en variabel. I Python gjøres dette ved å skrive typen og plassere det du vil konvertere i parenteser etterpå. Dette er egentlig en form for konstruktør. Noen vanlige typer er int (heltall), float (flyttall, en type desimaltall) og str (streng, dvs. tekst).

print "Pi = " + str(3.14) # Very inexact, rather import from math
print "Floor(pi) = " + str(int(3.14)) # Doesn't matter when we floor it

Operatorer

Operatorer kjenner vi fra matematikken. På et grunnleggende nivå kommer vi stort sett til å holde oss til aritmetiske (matematiske) operatorer. I Python har vi syv slike: de fire grunnleggende matematiske operasjonene, deling med avrunding mot −∞ modulo (rest ved deling) og opphøying. En annen viktig operator vi har sett til nå er tildelingsoperatoren. Med disse kan vi lage uttrykk og tildele verdiene av uttrykk til variabler.

Operator Funksjon Eksempel Resultat
+ Addisjon 39 + 3 42
- Subtraksjon 47 - 5 42
* Multiplikasjon 6 * 7 42
/ Divisjon 85 / 2 42 (merk at resultatet rundes ned mot −∞)
// Divisjon med floor 84.7 / 2.0 42.0
 % Modulo 85 % 43 42
** Opphøying 2 ** 8 256 (ikke 42?)
= Tildeling the_answer = 2 ** 6 - 22 42

En annen type operator som er nyttig i forhold til kontrollstrukturer, er sammenlikningsoperatorene.

Operator Tester for Eksempel Resultat
== Likhet 5 == 6 False
 != Ulikhet 5 != 6 True
> Mer enn 10 > 5 True
>= Mer enn eller lik 10 >= 11 False
< Mindre enn 15 < 10 False
<= Mindre enn eller lik 10 <= 10 True
is Samme objekt "Grr" is None False
is not Ulike objekter "Grr" is not "Growl" True

Lister

En type som brukes mye i Python er lister. Python har flere typer lister. De to vanligste er rekker (arrays) som enkelt kalles for list i Python og assosiative rekker (associative arrays) kalt dict etter dictionary (ordbok) i Python.

list = [1, 2, 3, 4, "Five"]
print list
print list[0]
print list[4]
print list[-1]
dict = {"one": 1, "two": 2, "three": 3}
print dict
print dict["one"]
print dict["three"]

Innrykk

I Python angis blokker (relaterte deler med kode) ved hjelp av innrykk. Altså antall mellomrom (i Python anbefales det å bruke mellomrom, ikke tabulator, til innrykk) bestemmer hvilke instruksjoner som hører sammen. Så om man lager en funksjon eller bruker kontrollstrukturer, bestemmes det hvilke instruksjoner som hører til i blokka, ved hjelp av ekstra innrykk av all kode som inngår i den.

Kodeblokker innledes alltid av et kolon i Python. Altså økes innrykket etter et kolon, og når du er ferdig med den kodeblokka, minker du innrykket.

Kontrollstrukturer

Det finnes to typer kontrollstrukturer: betingede strukturer og løkkestrukturer. Betingede strukturer lar deg utføre bestemte instruksjoner kun under visse betingelser. Løkker lar deg utføre instruksjoner flere ganger med varierende data.

Betingede strukturer

I Python har man en hvis-setning (if-statement) som utgjør dens betingede kontrollstruktur. Man kan også utføre andre instruksjoner ved å legge dem i en else-blokk. Ofte kaller man dette for en hvis-så-ellers-struktur:

a = 4
if a >= 5:
   print "A is more than or equal to 5!"
else:
   print "A is less than 5!"

Om man vil utføre flere tester, kan man bruke elif, kort for else if, som sjekker en ny betingelse om den første ikke ble oppfylt:

a = 4
if a > 5:
   print "A is more than 5!"
elif a == 5:
   print "A is FIVE, a totally awesome prime number!"
elif a == 4:
   print "A is FOUR, which isn't very interesting..."
elif a == 3:
   print "A is THREE, the first odd prime number!"
elif a == 2:
   print "A is TWO, the only even prime number!"
else:
   print "A is less than 2, meaning it's not a prime number!"

Løkker

I tillegg til betingede kontrollstrukturer har vi to typer løkker. Den ene er en betinget løkke, som likner på if, men utføres flere ganger, og en løkke for å gå gjennom lister og andre sekvensielle data.

while

While-løkka styres av en betingelse à la if-setninger:

a = 2
while a < 256:
    print "A is too tiny:", a
    a = a ** 2
print "Finally A is big enough:", a

for

For-løkka går gjennom en liste av noe slag ved at en variabel settes til et nytt element i lista for hver gjennomgang av løkka:

workdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Casual Friday"]
for day in workdays:
    print "%s is a work day!" % day

Ordbøker har både en nøkkel og verdi, så da kan vi tildele nøkkelen til en variabel og verdien til en annen:

days = {"Monday": "work day",
	"Tuesday": "work day",
	"Wednesday": "work day",
	"Thursday": "work day",
	"Friday": "day you wear your bathrobe to work",
	"Saturday": "party day",
	"Sunday": "day you spend in bed"}
for day, kind in days.items():
    print "%s is a %s!" % (day, kind)

Merk at items() er en funksjon i ordbøker som returnerer par med nøkkelord og innhold. Om man bare vil gå gjennom nøklene, kan man bruke keys() i stedet, og om man bare er interessert i verdiene, kan man bruke values().

Merk at rekkefølgen er annerledes fra da ordboka ble opprettet. Dette har med hvordan ordbøker lagres å gjøre. Om rekkefølgen på elementene er viktig, kan du bruker lister med lister eller tupler med tupler[1].

Avbryte løkker

Det finnes en instruksjon for å avbryte løkker. Denne brukes gjerne i en if-setning inni en løkke:

a = 2
while a < 256:
    if a == 64:
       print "OH NO! 64 is a magic number!"
       break
    print "A is too tiny:", a
    a = a * 2
print "Finally A is big enough:", a

Hoppe over en gjennomgang av en løkke

En annen instruksjon som kan være nyttig er continue. Den lar deg hoppe over en enkelt kjøring av løkka:

a = 2
while a < 256:
    if a == 64:
       print "OH NO! 64 is a magic number!"
       a = a + 32
       continue
    print "A is too tiny:", a
    a = a * 2
 
print "Finally A is big enough:", a

Funksjoner

Funksjoner lar deg gruppere flere programsetninger sammen i en navngitt blokk. Funksjonen kan så kalles og da utføres alle programsetningene i den. For å deklarere en funksjon skriver man def etterfulgt av et funksjonsnavn og en liste parametre i parenteser etterfulgt av et kolon for å starte kodeblokka.

def hello():
    print "Hello, World!"
 
hello()
def hello(name):
    print "Hello, %s!" % name
 
hello("John")

Parametre kan også gis en standardverdi som brukes om argumentet ikke oppgis:

def hello(name="World"):
    print "Hello, %s!" % name
 
hello()
hello("John")

Referanser

  1. Tupler i Python-manualens kapittel om datastrukturer - http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences
Personlige verktøy