Grunnleggende Python
Fra Programmering
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
- ↑ Tupler i Python-manualens kapittel om datastrukturer - http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences