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¶
Åbn programmet IDLE, det blev installeret sammen med Python-fortolkeren i Installation af Python (og IDLE).
Dette vindue kaldes shell-vinduet.
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)
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 navnetmy_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.
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 teksten4
.Hvis du ikke ser noget output, et output i rød tekst med ordet
error
i blandt eller en popup med teksteninvalid 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.
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¶
Ændre dit første program
my_first_program.py
, eller endnu bedre, opret en kopi af det som hedddermy_first_error.py
og ændre i det, så det ser således ud (slet ett
fraprint
linje 1):1 2
prin("Python") print(2+2)
Gem programmet og udfør det vha.
[F5]
. Denne gang kommer der et rødt output som indikerer en fejl.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årprint
i stedet forprin
.
Syntaksfejl¶
Ændre dit første program
my_first_program.py
, eller endnu bedre, opret en kopi af det som hedddermy_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)
Gem programmet og udfør det vha.
[F5]
. Denne gang kommer der ikke noget output i shellvinduet, der kommer derimod en popup med teksteninvalid syntax
og linje 2 bliver markeret med rød overstregning: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 skriveprint(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:
2.2. Atom¶
2.2.1. Første program med Atom¶
Å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")
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 navnetmy_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 æ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.
Nu er der to måder at afvikle/køre/udføre Python-programmet du har skrevet.
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 teksten4
på hver sin linje.Hvis du ikke ser noget output eller output med ord som
Traceback
ogError
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.
Vha. atom-python-run-pakken: Tryk
[F5]
.Et nyt vindue åbnes og viser outputtet af programmet. I dette tilfælde teksten
Python
og teksten4
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
ogError
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.
Ret dit første program
my_first_program.py
, eller endnu bedre, opret en kopi af det som hedddermy_first_error.py
og ret i det, så det ser således ud (slet ett
fraprint
linje 1):1 2
prin("Python") print(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).
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)
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
iprint
.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 skriveprint(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: