Print og variabler

Indtil videre har vi arbejdet i shell. Og hvis du kigger på eksemplet ovenfor, så lagde du måske mærke til, at der ikke var noget svar da vi indtastede variablerne længde og bredde. Det er fordi shell kun udskriver noget automatisk når det er et regnestykke.

For at tvinge shell til at lave en udskrift skal vi bruge funtionen print()

print()

print() funktionen udskriver det som står i parentesen:

print([det som skal udskrives])

I sidste kapitel bruge vi kun tal til at udregne regnestykker. Men Python kan også udskrive tekst. Et stykke tekst kalder man i programmering for en streng. Strenge skal i Python "pakkes ind" i enten anførselstegn ("[Selve strengen]" ) eller apostroffer ('[Selve strengen]' ).

Her er to eksempler:

>>> print("Dette er en tekststreng")
Dette er en tekststreng
>>> print('Dette er en anden tekststreng')
Dette er en anden tekststreng

Funktionen gør ikke andet end at printe indholdet af parantesen ud som en en streng (tekst). Det betyder f.eks. at hvis man skriver print(3), så bliver 3-tallet udskrivet som tekst.

Variabler

I Python laver vi en variabel ved at koble et ord eller tegn sammen med en værdi. Der gælder følgende regler for variabler:

  • Variabler skal starte enten med et bogstav eller _ (underscore)
  • Variabler må ikke starte med tal
  • Der er forskel på store og små bogstaver. Navn og navn er to forskellige variabler

Et godt råd er at give dine variabler læsbare og forståelige navne. Skal du f.eks. lave en variabel til et fornavn kan det være:

  • fnavn (læsbar forkortelse)
  • fornavn (snake case - underscore til at adskille ord)
  • forNavn (camel casing - Stort bogstab til at adskille ord)

Du skal navngive på den måde det giver bedst læsbarhed for dig og dem der skal læse din kode.

Jeg bruger snake case, fordi jeg synes det er nemmest at læse.

Her opretter vi 2 variabler. En for fornavn og en for alder. Herefter printer vi dem ud.

>>> fornavn="Thomas"
>>> alder=50
>>> print(fornavn)
Thomas
>>> print(alder)
50

Læg mærke til at der er sat anførselstegn omkring "Thomas". Det er fordi det er en tekststreng. Hvis jeg glemmer laver Python en fejlmeddelelse:

>>> fornavn=Thomas
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
NameError: name 'Thomas' is not defined

Det skyldes at Python ikke kan oversætte Thomas til en værdi, men skal have mit navn som en streng.

Hvis variablerne er værdier kan vi regne dem dem:

>>> a = 2
>>> b = 3
>>> a + b
5

Input - tekst

Vi kan lave inputs i programmet ved at bruge funktionen input(). I eksemplet laver vi variablen nyt_navn, som gemmer det navn brugere indtaster

nyt_navn = input("Hvad hedder du: ")

Når vi kører programmet kommer der en line hvor der står: "Hvad hedder du: " hvor du indtaster dit navn

>>> nyt_navn = input("Hvad hedder du: ")
Hvad hedder du: 

Når du har indtastet dit navn sker der ikke mere. For at se resultatet kan vi nu printe variablen nyt_navn:

>>> print(nyt_navn)
Thomas

Når vi bruger input, så vil det man svarer altid blive gemt som en streng - altså tekst. Hvis du vil bruge det indtastede til at lave beregninger med, så skal input konverteres til en int eller en float.

Input - tal

Lad os sige vi gerne vil lave et lille program der beregner prisen på x antal pizzaer, hvis de koster 70 kr stykket. Programmet skal gøre følgende:

  1. Spørg hvor mange pizzaer man vil købe (heltal)
  2. Udskrive den samlede pris (\( antal \cdot 70 \))

Først spørger vi: "Hvor mange pizzaer vil du købe"

antal=input("Hvor mange pizzaer vil du købe: ")

Jeg kører koden og indtaster: 10

>>> antal=input("Hvor mange pizzaer vil du købe: ")
Hvor mange pizzaer vil du købe: 10

Hvis vi nu forsøger at udregne den samlede pris ved at gange antal med 70, så får vi en fejl:

>>> antal*70
'10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010'

Antallet - altså de 10 - bliver skrevet 70 gange. Det er fordi variablen antal bliver tolket som en tekststreng. Og den har vi lige bedt om at få vist 70 gange.

Det vi skal gøre er at ændre de 70 til en talværdi, og det kan vi gøre med funktion int(), så det bliver til et heltal eller float() så det bliver til et decimaltal.

Her gør vi antallet til en int, fordi man kun kan købe hele pizzaer:

>>> int(antal)*70
700

Det kan gøres smartere end ovenfor, ved at konvertere resultatet til den rigtige type tal fra starten af.

Det gør man ved at pakke input() ind i int() - altså int(input())

Variablen antal kunne være lavet på følgende måde:

>>> antal=int(input("Hvor mange pizzaer vil du købe: "))
Hvor mange pizzaer vil du købe: 10
>>> antal*70
700

Input - den smarte måde

Skal man være smart skal lave din input - kode rigtigt fra starten af. Du skal overveje følgende 3 ting.

Output skal være en tekststreng
Input skal laves simpel

var=input("indsæt tekst her: ")
Output skal være et heltal (int)
Input skal pakkes ind i int()

var=int(input("indsæt tekst her: "))
Output skal være et decimaltal (float)
Input skal pakkes ind i float()

float(var=input("indsæt tekst her: "))

Printe variabler

Vi kan også udskrive variablerne. Det gøres ved at bruge det man kalder fancy print:

>>> fornavn="Thomas"
>>> alder=50
>>> print (f"Hej. Jeg hedder {fornavn}. Jeg er {alder} år gammel")
Hej. Jeg hedder Thomas. Jeg er 50 år gammel

Lad os kigge på det der står inde i print funktionen:

f"Hej. Jeg hedder {fornavn}. Jeg er {alder} år gammel"

f aktiverer fancy print. I hver af de krøllede parenteser har jeg indsat et af variabelnavnene, som så bliver skrevet ud af print-funktionen.

Formatere print()

Det kan også lade sig gøre at styre hvordan output bliver vist. Det kan gøres på to måder:

  1. Ved at bruge escaped characters
  2. Ved at bruge trippel anførselstegn (''') eller trippel citationstegn (""").

Escaped characters

Her er der 3 vi vil komme til at anvende:

\t
Tabulator. Svarer til at trykke på Tab, altså rykke 4 felter frem
\n
Ny linie. Svarer til at trykke på Enter
\r
Ryk tilbage. Svarer til at skrive på samme linie igen uden at slette det gamle indhold. Kan bruges til at lave nedtællinger hvor tallene erstattet hinanden.

Et eksempel

print("\nHejsa\n\n\tDenne tekst er formateret\n\nLet ... ikke;)")

Det der står i linien er:

  1. \n - Lav ny linie
  2. Skriv: Hejsa
  3. \n\n\t - lav ny linie x2 ryk en tabulator frem
  4. Skriv: Denne tekst er formateret
  5. \n\n\ - Lav ny linie x2
  6. Skriv: Let ... ikke;)
>>> print("\nHejsa\n\n\tDenne tekst er formateret\n\nLet ... ikke;)")

Hejsa

	     Denne tekst er formateret

Let ... ikke;)

Trippel anførselstegn

Hvis du laver trippel anførselsteng først og til sidst, så styrer du designet ved hjælp af at lave mellemrum og trykke Enter:

>>> print("""
Hejsa

    Denne tekst er formateret
    
Let ... ikke
""")

Denne tekst vil blive udskrevet på følgende måde:

Hejsa

    Denne tekst er formateret
    
Let ... ikke

Escaped characters

Du kan komme ud for at du skal bruge tegnene \ , ' , eller " i dit tekst. For at de bliver skrevet ud som almindelige tegn skal de "escapes".

Det gøres på følgende måde:

\\
Laver tegnet \

Eksempel:
>>> print("Sådan laver du et \\ (backslash)")
Sådan laver du et \ (backslash)
\'
Laver tegnet '

Eksempel:
>>> print("Sådan laver du et \' (anførselstegn)")
Sådan laver du et ' (anførselstegn)
\"
Laver tegnet "

Eksempel:
>>> print("Sådan laver du et \" (citationstegn)")
Sådan laver du et " (citationstegn)