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.