Python versjoner
Kort om Python-versjoner og måter å bruke Python
Det finnes to hovedversjoner av Python som er i aktiv bruk; Python2 og Python 3. I tillegg finnes det en del ulike måter å bruke Python på, som kan være litt forvirrende i starten. Her gir vi en veldig kort oversikt over de ulike versjonene og måtene vi bruker Python på i IN1900.
Ulike måter å bruke Python
Det finnes (minst) tre ulike måter å bruke Python på, som kanskje kan virke forvirrende i starten. Her er en kort forklaring.
- Standard/klassisk programmering med editor og terminalvindu. Dette er den måten vi primært skal bruke Python i IN1900. Vi skriver programmer i en editor, og hvert program er en eller flere tekstfiler med lovlig Python-kode. Deretter kjører vi programmet fra et terminalvindu, som beskrevet i veiledingene om installasjon og bruk av Python.
- Standard/klassisk programmering med IDE. Dette er i prinsippet samme metode som over, men editoren og terminalvinduet er satt sammen i et komplett verktøy som kalles en IDE (integrated development environment). Spyder og PyCharm er eksempler på populære IDEer. Man skriver koden i ett vindu og kjører den fra et annet, og har i tillegg en del verktøy og menyer tilgjengelig for feilsøking, hjelp med kodestil og annet. Se veiledningene om installasjon og bruk av Python for mer info.
- Python som interaktivt verktøy. Hvis du åpner et terminalvindu
og skriver
python
får du et såkalt interaktivt Python-shell. Et annet alternativ eriPython
, som er et noe utvidet Python-shell. I Python-shellet kan du skrive inn linjer med Python-kode og kjøre hver linje interaktivt. Dette kan være veldig nyttig for å gjøre enkle utregninger og for å sjekke Python-syntaks og hvordan ulike komandoer brukes. For all annen programmering (dvs mer enn et par linjer) er det vanligvis bedre å skrive koden i en fil og kjøre programmet på vanlig måte. - Jupyter notebooks. En Jupyter notebook er et dokument som kan inneholde en blanding av tekst, kode og figurer. Dokumentet vises og redigeres gjennom en vanlig browser, og kjører som en bakgrunnsprosess enten på egen maskin eller på en server. Notebooks er velegnet for undervisningsformål, siden det er enkelt å forklare ulike programmeringskonsepter i detalj, og kombinere dette med "live" kode som man kan forandre på og se resultatet direkte. I IN1900 vil vi bruke notebooks til forelesningsnotater og til å gå gjennom nye tema i forelesninger, og det er derfor greit å kjenne til det. Man kan også fint bruke notebooks til egen programmering, for eksempel til å løse oppgaver fra forelesning og annet, men alle ukeinnleveringer skal leveres inn som vanlige .py-filer.
Python 3 og Python 2
Siden høsten 2019 har vi brukt Python 3 i IN1900, og det er denne versjonen som blir brukt i læreboka og på forelesning. Alle versjoner fra 3.6 til 3.9 kan fint brukes i kurset. Den forrige læreboka (H. P. Langtangen; A primer on Scientific programming with Python) er skrevet for Python 2.7. Denne boka kan likevel være en nyttig ressurs å bruke i kurset, siden den er mye mer detaljert og inneholder mange flere eksempler enn den nye boka, men da er det viktig å kjenne til forskjellene mellom Python-versjonene. For den programmeringen vi gjør i IN1900 er det bare noen få forskjeller som er viktige:
- Den mest synlige forskjellen i våre programmer er i bruken av
print
for å skrive ut noe til skjermen. I Python 2 skiver man f.eks.print "Hello"
, mens i Python 3 er print en funksjon, så man skriverprint("Hello")
- Formatering av tekst for output er endret. I Python 3.6 ble det
innført såkalte f-strenger, som gjør tekstformatering enkelt og
intuitivt. For eldre versjoner må man bruke en funksjon kalt
format
(Python 2.7-3.5) eller såkalt printf- eller %-formatering, som er den metoden som beskrives i læreboka. Vi skal primært bruke f-strenger i kurset, men forelesningsnotatene inneholder en kort beskrivelse av alle metodene. - Heltallsdivisjon er forskjellig håndtert i Python 2 og 3. I Python 2
(og mange andre programmeringsspråk) blir
1/2
ikke 0.5, men 0! Dette er fordi vanlig divisjonstegn (/
) betyr heltallsdivisjon når argumentene er heltall. Dette er nyttig i mange former for programmering, men er vanligvis ikke det vi er ute etter i IN1900. For å unngå feil resultat er det en god vane å skrive1.0/2.0
, og generelt forsikre seg om at argumentene som brukes i divisjon er flyttall. I Python 3 er ikke dette nødvendig, da divisjonstegnet/
alltid betyr vanlig flyttallsdivisjon. - Håndtering av tekst med norske tegn er forenklet. I Python 2 kan man normalt ikke bruke æ, ø og å, heller ikke i kommentarer, da disse ikke er med i standard-tegnsettet som Python forstår. Dette er endret i Python 3.
- I Python 2 har vi
range
ogxrange
som gjør ca det samme, menrange
lager en liste ogxrange
en såkalt iterator, som er mer effektiv. I Python 3 finnes barerange
, som gjør det samme somxrange
i Python 2. Mer om dette senere. - I Python 2 finnes
input
ograw_input
for å lese inn tekst fra brukeren. I Python 3 finnes bareinput
, som gjør det samme somraw_input
i Python 2. Mer om dette senere.
Denne listen er langt fra komplett, men dette er de viktigste forskjellene for den typen programmering vi gjør i IN1900.