Variabler

Variabler er små tekstrenge vi kan sætte til at have enten en værdi, en char eller en tekststreng. Fordelen ved at anvende variabler er, at vi hurtigt kan ændre koden til at køre efter nye betingelser, f.eks. antal gang, sprog osv.

Før vi gennemgår hvad variabler er skal du lige læse nedenstående eksempel:

>>> var1 = 1
>>> var2 = 2
>>> var1 + var2
3

Det som sker her er, at vi sætter variablen var1 til at have værdien 1 og em var2 til værdien 2. Det kan vi se når vi beder Python om at udskrive summen af variablerne ud - resultatet er 3. Man kan sige at en variable er en stedfortræder for en værdi eller en tekststreng.

Når en variabel er en værdi, skal tallet skrives direkte ind.

Du behøver ikke at lave en print() i den sidste kodelinie. Shell udskriver automatisk output (resulater) af kode.

Tekst i variabler

Tekst i variabler skal pakkes ind i enten citationstegn eller anførselstegn. Se herunder:

>>> var1 = "hej"
>>> var2 = 'verden'

Hvis du forsøger at lægge disse to varibaler sammen, så får du følgende resultat:

>>> var1 + var2
hejverden

Python "klistrer" simpelthen var2 bag på var1

For at få et mellemrum mellem variablerne skal vi klistre et på - altså lægge et mellemrum til.

>>> var1 + " " + var2
'hej verden'

Vi kan også tilsætte ord med samme metode:

>>> var1 + " store " + var2
'hej store verden'

Navngivning af variabler

Nar man navngiver variabler gælder der følgende regler

Skal starte med et bogstav eller _ (underscore)
Eksempler: antal, Position2, _bil
Må kun indeholde almindelige tegn (A-å, 0-9) og tal, samt underscore (_)
Du må altså ikke anvende paranteser, delestreger eller andre tegn
Der er forskel på store og små bogstaver (case sensitive)
var, Var, VAR er alle forskellige variabler
Variablerne på ikke hedde det samme som kommandoer

Brug beskrivende navne til dine variabler, så bliver koden lettere at læse. F.eks: fnavn til fornavn og antal_gæt til antallet af gæt

Skal man anvende mere beskrivende variabel navne med flere ord, kan man bruger enten snake-casing, hvor man sætter underscore (_) mellem ordene eller camelCasing, hvor man laver stort forbogstav i det nye ord. Se nedestående eksempel:

Snake-casing
Eksempler:
  • antal_bogstaver
  • samlet_løn
  • antal_afdrag
camel-Casing
Eksempler:
  • antalBogstaver
  • samletLøn
  • antalAfdrag

Brug den metode du synes giver bedst overblik og læsbarhed. Jeg foretrækker snake-casing, fordi jeg synes det er lettest at læse.

Ændring af variabler

Hvis man vil ændre værdien af en variabel gør sætter skriver man den bare en gang til med den nye værdi:

>>> var1 = 1 # sætter var1 til værdien 1
>>> var1 # udskriver var1
1
>>> var1 = 2 # ændrer var1 til værdien 2
>>> var1 # udskriver var1
2

En til eller fra

Ofte har man brug for at lade en variabel vokse eller falde med en bestemt enhed. Det kan f.eks. være hvis man vil lade en variabel vokse med 1.

Se eksemplet herunder

>>> a = 1
>>> a += 1
>>> a
2

Denne metode virker også med de andre regningsarter, og med andre væksttal:

>>> a = 6
>>> a -= 2
>>> a
4
>>> a *= 1.5
>>> a
6.0
>>> a /= 3
>>> a
2.0

Man kan også bruge variabler:

>>> a = 1
>>> alder = 15
>>> a += alder
>>> a
16 

Input

For at få inout fra brugeren skal vi bruge funktionen input().

input() viser teksten i parentesen og venter til brugeren svarer. For at kunne anvende input skal det gemmes i en variabel.

>>> navn = input("Hvor hedder du: ")
Hvor hedder du:

Her svarer du så og trykker Enter. Når du har svaret kan du se hvad variablen er:

>>> navn = input("Hvor hedder du: ")
Hvor hedder du: Thomas
>>> navn
'Thomas'

Variabler der laves ved hjælp af input() bliver altid gemt som en tekststreng.

Input af tal

Da input() danner tekststrenge skal du gøre lidt ekstra når det handler om tal der skal bruges til at regne videre med - altså som værdier.

Hvis det det skal svares med er integers (heltal), så skal funktionen pakkes ind i int() og hvis det er decimaltal skal den pakkes ind i float().

Herunder laver vi et program der finder prisen på indkøbte sodavand:

>>> antal = int(input("Antal sodavand: "))
Antal sodavand: 30
>>> pris = float(input("pris pr stk: "))
pris pr stk: 5.95
>>> antal * pris
178.5

Antal er blevet lavet til int og prisen til float.

Hvis vi ikke kan huske de enkelte variablers typer, kan vi se det med kommandoen type():

>>> type(navn)
<class 'str'>
>>> type(antal)
<class 'int'>
>>> type(pris)
<class 'float'>

Når du beder brugeren om input skal du overveje hvad resultatet skal være og lave koden derefter.

Ikke alt som er tal skal ændres til int eller float. Det kan f.eks. gælde telefon, hus og postnumre.

Tommelfingerreglen for at det skal gemmes som tal er:

Hvis det bruges til at lave beregninger
Det kan f.eks. være antal og priser
Hvis det skal kunne ændres
Det kan f.eks. være ved at gøre folk et år ældre eller at priser skal stige med en procentsats
Mere om konvertering af datatyper

Vi kan konvertere mellem datatyperne ved at bruge følgende funktioner:

str()
Konvertere til strenge (tekst)
int()
Konverterer til integeres (heltal)
float()
Konverterer til decimaltal

I alle tilfælde indsættes det som skal konverteres i parentesen

Eksempler

Konverter fra tekst til heltal

>>> int("17")
	17

Konverter fra tekst til float

>>> float("17.4")
	17.4

Konverter heltal til tekst

>>> str(17)
	'17'

Variabler i tekststrenge

Du kan få brug for at kunne bruge variabler i tekst. Det kan f.eks. være hvis du gerne vil byde brugeren personligt velkommen.

Kig på dette eksempel hvor vi indsætter et fornavn i en tekst.

>>> fornavn = "Thomas"
>>> print(f"Hej {fornavn}")
Hej Thomas

Læg mærke til det lille f foran første citationstegn og at variablen er indskrevet i en krøllet parentes. f fortæller Python at det er en f-string. Vi kan indsætte alle de variabler vil vil og endda udføre kommandoer i dem.

Se nedestående eksempel

>>> bog = "The Lord of the Rings"
>>> forfatter = "J. R. R. Tolkien"
>>> udgivelsesår = 1954
>>> print(f"{bog} blev skrevet af {forfatter} og udgivet i {udgivelsesår}. Det er {2021-udgivelsesår} siden")
The Lord of the Rings blev skrevet af J. R. R. Tolkien og udgivet i 1954. Det er 67 siden

Alderen på bogen bliver regnet ud i printsætningen med {2021-udgivelsesår}.

F-strings kan også arbejde med argumenter. Her er 2 eksempler:

Afrunding

>>> print(f"1/7 = {decimaltal}.\n\nMed 4 decimaler er 1/7 = {decimaltal:.4f}")

1/7 = 0.14285714285714285.
Med 4 decimaler er 1/7 = 0.1429

I anden udskrift {decimaltal:.4f} fortæller vi Python, at den skal vise tallet med 4 decimaler

Variabel bredde

Senere hen skal vi lære at arbejde med lister, og i den sammenhæng kan vi sætte bredden på den variabel vi vil udskrive. Se følgende kode:

>>> fnavn1 = "Anders"
>>> fnavn2 = "Bo"
>>> enavn1 = "Nybo"
>>> enavn2 = "Holmfeldt"
>>> print(f"{fnavn1:12}{enavn1:12}\n{fnavn2:12}{enavn2:12}")
Anders      Nybo        
Bo          Holmfeldt

Havde vi ikke indsat en bredde på variablerne ville udskriften af set ud som herunder:

print(f"{fnavn1}{enavn1}\n{fnavn2}{enavn2}")
AndersNybo
BoHolmfeldt

Mere om f-print: https://markbrowntuition.co.uk/computing/2017/11/10/fancy-printing-with-python/

Fancy print kan ikke bare

Anden afslutning

Som standard indsætter Python et linieskift (\r) efter en print sætning. Dette kan ændres ved at indsætte end="*det som der skal gøres*" som en paramter.

Det kan være smart hvis man vil have noget til at udskrive sig efter hinanden, f.eks. en talrække. Her ser du noget kode, som du først vil lære senere, men det går i al sin enkelthed ud på at udføre den samme kommandolinie flere gange.

	>>> for i in range(5):
    print(i) ← Normal afslutning betyder linieskift

    
0
1
2
3
4
>>> for i in range(5):
    print(i, end=" ") ← afsluttes med et mellemrum

    
0 1 2 3 4 
>>> for i in range(5):
    print(i, end=" : ") ← afsluttes af et kolon omgivet af mellemrum

    
0 : 1 : 2 : 3 : 4 :    

Opgaver

Pladsholdere 1

Lav en kode ved hjælp af variabler, der giver følgende output

Jeg hedder [NAVN].
Jeg bor i [BY] og er [ALDER] år gammel.
Mit telefonnr er [TELEFONNR], og det er en [MOBILMÆRKE]