2. Første Python-program og første fejl

Nu hvor du har installeret en Python-fortolker, som kan forstå de programmer du skriver, og en teksteditor så du kan skrive programmer, er du klar til at skrive dit første program.

Vælg om du vil skrive dit Første program med IDLE eller om du vil skrive dit Første program med Atom.

Er du i tvivl så kan du vælge IDLE, det er det simpleste af de to udviklingsmiljøer.

2.1. IDLE

2.1.1. Første program med IDLE

  1. Åbn programmet IDLE, det blev installeret sammen med Python-fortolkeren i Installation af Python (og IDLE).

    Dette vindue kaldes shell-vinduet.

    ../_images/idle-windows-shell-window.png
  2. Brug genvejen [ctrl]+[n] (Windows og Linux) eller [⌘]+n (macOS) til at åbne en ny fil.

    Et nyt vindue åbner med en tom tekstfil. Dette vindue kaldes editorvinduet. Her skriver du følgende to linjers kode, dit første Python-program:

    1
    2
    print("Python")
    print(2+2)
    
    ../_images/idle-windows-file-window-unsaved.png
  3. Gem filen ved at trykke [ctrl]+S (Windows og Linux) eller [⌘]+[S] (macOS).

    Bemærk

    Det er vigtigt at have markeret editorvinduet (med koden) når man bruger genvejen (eller menuerne for den sags skyld) til at gemme sin fil.

    Hvis man har markeret det andet vindue (Python 3.x Shell) så gemmer den teksten fra det vindue i stedet for.

    Gem filen et fornuftigt sted, lav f.eks. en mappe kaldet programmering og gem filen under den mappe med navnet my_first_program.py.

    Brug mappe- og filnavne uden mellemrum. Hvis navnet består af mange ord kan de adskilles af underscores _.

    Se også

    Organisering af mapper og filer for mere information omkring hvordan operativsystemer organiserer mapper og filer, og hvordan du bedst organiserer dine Python-filer.

    Når filen er gemt vises filens navn og sti i toppen af vinduet.

    ../_images/idle-windows-file-window-saved.png
  4. Brug nu genvejen [F5] mens editorvinduet er markeret (eller bruge menuen [Run] > [Run Module]) til at udføre/afvikle/køre programmet.

    Outputtet af programmet (tekst) vises i shellvinduet.

    I den røde markering står hvilket program (hvilken fil) som afvikles/udføres/køres og bagefter står outputtet, i dette tilfælde en linje med teksten Python og en linje med teksten 4.

    Hvis du ikke ser noget output, et output i rød tekst med ordet error i blandt eller en popup med teksten invalid syntax så er du allerede et afsnit foran. Spring til næste afsnitt Første fejl med IDLE for at forsøge at rette den fejl du har fået lavet.

    ../_images/idle-windows-shell-window-output.png

2.1.2. Første fejl med IDLE

En stor del af at lære at programmere er at lave fejl, skrive kode som ikke virker. Det er i øvrigt også en stor del af at programmere selv når du på et tidspunkt har fået mange års erfaring.

Det er derfor vigtigt at vide hvordan man retter fejl i et program. Her ser vi på to kategorier af fejl og hvordan de ser ud i IDLE; syntaks fejl og alle andre fejl.

Alle andre fejl

  1. Ændre dit første program my_first_program.py, eller endnu bedre, opret en kopi af det som heddder my_first_error.py og ændre i det, så det ser således ud (slet et t fra print linje 1):

    1
    2
    prin("Python")
    print(2+2)
    
  2. Gem programmet og udfør det vha. [F5]. Denne gang kommer der et rødt output som indikerer en fejl.

    ../_images/idle-windows-name-error.png
  3. Der er to interessante stykker information i fejlmeddelelsen:

    File "... my_first_program.py", line 1 fortæller i hvilken fil og på hvilken linje en fejl blev opdaget.

    NameError: name 'prin' is not defined fortæller, at koden indeholder et navn, eller ord, prin som Python-fortolkeren ikke forstår.

    Tilsammen kan de to stykker information lede os frem til, at der mangler et t i linje 1 således der står print i stedet for prin.

Syntaksfejl

  1. Ændre dit første program my_first_program.py, eller endnu bedre, opret en kopi af det som heddder my_first_syntax_error.py og ændre i det, så det ser således ud (slet sidste parentes i linje 1):

    1
    2
    print("Python"
    print(2+2)
    
  2. Gem programmet og udfør det vha. [F5]. Denne gang kommer der ikke noget output i shellvinduet, der kommer derimod en popup med teksten invalid syntax og linje 2 bliver markeret med rød overstregning:

    ../_images/idle-windows-syntax-error.png

    Syntaksfejl kan være sværere at rette fordi fejlen ofte indikere en anden linje end der hvor vi som programmører har skrevet noget andet end vi tænkte eller glemt noget.

    Det er en smule teknisk at forstå hvorfor fortolkeren siger der er fejl i linje 2 og ikke linje 1 hvor vi slettede parentesen.

    Den korte forklaring er, at linje 1 i visse tilfælde er gyldig Python-kode og derfor vælger fortolkeren at sige det er linje 2 som indeholder fejlen.

    Hvis programmets linje 2 havde set ud som nedenfor, ville linje 1 være gyldig.

    1
    2
    print("Python"
          " rocks!)
    

    Fortolkeren kan altså ikke vide om vi glemte at skrive ) i linje 1 eller kom til at skrive print(2+2) i stedet for f.eks. `` rocks!)`` i linje 2.

    Vigtigt

    Ved SyntaxError er kan programmørens fejl/forglemmelse sagtens findes på en af linjerne før den linje som fejlen angiver. Tjek derfor altid linjerne over der hvor fejlen meldes.

2.1.3. Indstilling af IDLE

Følgende indstillinger kan med fordel foretages eller overvejes inden du går videre med bogen:

Visning af linjenumre

2.2. Atom

2.2.1. Første program med Atom

  1. Åbn programmet Atom som blev installeret i Installation af Atom.

    Åbn en ny tom fil med genvejen [ctrl]+[N] (Windows og Linux) eller [⌘]+[n] (macOS).

    Skriv følgende to linjers kode i det tomme vindue, dit første Python-program:

    print("Python")
    print("2+2")
    
    ../_images/atom-untitled-program-ubuntu1804.png
  2. Gem filen ved at trykke [ctrl]+S (Windows og Linux) eller [⌘]+[S] (macOS).

    Gem filen et fornuftigt sted, lav f.eks. en mappe kaldet programmering og gem filen under den mappe med navnet my_first_program.py.

    Brug mappe- og filnavne uden mellemrum. Hvis navnet består af mange ord kan de adskilles af underscores _.

    Se også

    Organisering af mapper og filer for mere information omkring hvordan operativsystemer organiserer mapper og filer, og hvordan du bedst organiserer dine Python-filer.

    ../_images/atom-saved-program-ubuntu1804.png

    Når filen er gemt ændrer Atom-vinduet udseende. Navnet på din fil står i filens faneblad og der åbner et nyt panel Project som viser filer i den mappe hvor din fil er gemt.

    Nu hvor filen har fået en navn med endelsen .py genkender Atom filen som en Python-fil og highlighter (farver) koden så den er lettere at læse.

  3. Nu er der to måder at afvikle/køre/udføre Python-programmet du har skrevet.

    1. Vha. script-pakken: Tryk [ctrl]+[shift]+[b] (Windows og Linux) eller [⌘]+[i] (macOS)

      Programmets output vises i et nyt panel i bunden af vinduet, i dette filfælde tekste Python og teksten 4 på hver sin linje.

      Hvis du ikke ser noget output eller output med ord som Traceback og Error så er der højest sandsynligt en fejl i dit program. Gå til Første fejl med Atom.

      Bemærk

      Hvis du ændrer filen skal du gemme ændringerne før du afvikler/kører/udfører programmet igen via script-pakken.

    2. Vha. atom-python-run-pakken: Tryk [F5].

      Et nyt vindue åbnes og viser outputtet af programmet. I dette tilfælde teksten Python og teksten 4 på hver sin linje.

      Vinduet kan lukkes ved at trykke [Enter] eller ved at lukke vinduet som alle andre vinduer i dit operativsystem (typisk noget med at trykke på et kryds i hjørnet af vinduet).

      Hvis du ikke ser noget output eller output med ord som Traceback og Error så er der højest sandsynligt en fejl i dit program. Gå til Første fejl med Atom.

2.2.2. Første fejl med Atom

En stor del af at lære at programmere er at lave fejl, skrive kode som ikke virker. Det er i øvrigt også en stor del af at programmere selv når du på et tidspunkt har fået mange års erfaring.

Det er derfor vigtigt at vide hvordan man retter fejl i et program. Her ser vi på hvordan Python-fejl rapporteres i Atom med de to pakker script og atom-python-run.

  1. Ret dit første program my_first_program.py, eller endnu bedre, opret en kopi af det som heddder my_first_error.py og ret i det, så det ser således ud (slet et t fra print linje 1):

    1
    2
    prin("Python")
    print(2+2)
    
  2. Kør programmet via script- eller atom-python-run-pakken som beskrevet i Første program med Atom.

    Fejlmeddelelsen vises samme sted som programmets output.

    1
    2
    3
    4
    Traceback (most recent call last):
      File "{path}/my_first_program.py", line 1, in <module>
        prin("Python")
    NameError: name 'prin' is not defined
    

    Fejlmeddelelsen indeholder to vigtige stykker information:

    • Linje 2 fortæller hvilken fil og på hvilken linje fejlen befinder sig (my_first_program.py, linje 1). Bemærk {path} er stien til din fil.

    • Linje 4 fortæller hvilken fejl fortolkeren fandt (NameError, prin er ikke et navn Python kender).

  3. Ret dit første program igen, eller endnu bedre, opret en kopi af det som hedder my_second_error.py og ret i det, så det ser således ud (slet den sidste parentes i linje 1):

    1
    2
    print("Python"
    print(2+2)
    
  4. Kør programmet via script- eller atom-python-run-pakken.

    Denne gang er fejlmeddelelsen en anden:

    1
    2
    3
    4
      File {path}/my_first_program.py", line 2
        print(2+2)
            ^
    SyntaxError: invalid syntax
    

    Fejlen angives til at være i linje 2, der er endda en ^ som peger på t i print.

    Det er en smule teknisk at forstå hvorfor fortolkeren siger der er fejl i linje 2 og ikke linje 1 hvor vi slettede parentesen.

    Den korte forklaring er, at linje 1 i visse tilfælde er gyldig Python-kode og derfor vælger fortolkeren at sige det er linje 2 som indeholder fejlen.

    Hvis programmets linje 2 havde set ud som nedenfor, ville linje 1 være gyldig.

    1
    2
    print("Python"
          " rocks!)
    

    Fortolkeren kan altså ikke vide om vi glemte at skrive ) i linje 1 eller kom til at skrive print(2+2) i stedet for f.eks. `` rocks!)`` i linje 2.

    Vigtigt

    Ved SyntaxError er kan programmørens fejl/forglemmelse sagtens findes på en af linjerne før den linje som fejlen angiver. Tjek derfor altid linjerne over der hvor fejlen meldes.

2.2.3. Indstilling af Atom

Følgende indstillinger kan med fordel foretages eller overvejes inden du går videre med bogen:

Skift til lyst farvetema