Programmering 1‎ > ‎

Kap 2


Syntaxfel

Du kommer att göra fel när du programmerar. Ett sätt att minska risken för fel eller att lättare hitta fel är att göra medvetet fel i koden du skriver. 

Skriv prin('Hello') och kör programmet. Jag får detta fel:

Traceback (most recent call last):
  File "/Users/paul/xxxxxxx/python/Programmering1/hej_varlden.py", line 1, in <module>
    prin('Hello')
NameError: name 'prin' is not defined

Man får reda på att felet är på en viss rad. I detta exemplet stämmer det men vid andra tillfällen kan felet vara på en annan rad. Tänk på att Python tolkar koden som en digital maskin och inte som en människa och reagerar på fel som den är programmerad att göra.  Felet jag gjorde kallas ett syntaxfel. Det är ungefär som att stava fel när man skriver texter. Tänk på att Python stavningskontrollerar inte din tex.

Syntax Highlighting (flytta längre fram när det finns mer kod)

För att lättare skilja olika delar av koden åt, färgas olika delar med olika färger. Det underlättar när man kodar eller ska leta efter fel.



Variabler

#Raden nedan skriver ut en mening
meddelande = "Hej. Detta är en mening!"
print(meddelande)
Skriv in koden ovan. Man kunde skrivit  print("Hej. Detta är en mening!"istället. Skillnaden är att vi skapade en variabel som lagrade ett värde nämligen texten "Hej. Detta är en mening!". 

En variabel är som en låda som Python kan spara värden i. 

Tänk vad som borde bli utskriften när du skriver in dessa raderna
meddelande = "Hej. Detta är en mening!"
print(meddelande)

meddelande = "Detta är en annan mening!"
print(meddelande)

Utskriften blir:
Hej. Detta är en mening!
Detta är en annan mening!

Detta betyder att meddelande först har värdet "Hej. Detta är en mening!" sedan byts innehållet i variabeln till "Detta är en annan mening!"

Hur man väljer variabelnamn

Använd bara variabelnamn som innehåller bokstäverna a-z och siffrorna 0-9 och understreck _. Du kan starta ett variabelnamn med en bokstav eller understreck men inte med en siffra. Använd inte mellanrum i variabelnamn. Använd inte ord som redan är upptagna av Python som print.En annan sak du bör se upp med är siffran 1, bokstäverna lilla L och stora I. De är lätt att ta fel på. Samma sak gäller stora O och siffran 0. Använd små bokstäver. Tänk på att Python tolkar SPAM, sPaM, Spam och spam som fyra olika variabler och det är olämpligt att använda de tre första.

en_variabel = "Detta är en text" OK

variabel_1 = "Detta är en text" OK

1_variabel = "Detta är en text" FEL

en variabel = "Detta är en text" FEL

print = "Detta är en text" FEL

En_variabel = "Detta är en text" Olämpligt att använda stora bokstäver i variabelnamn

Använd variabelnamn som är så korta som möjligt men beskriver vad som kan lagras i variabeln. 

fornamn_efternamn = "Pelle Person" Rätt

en_persons_fornamn_ och_efternamn = "Pelle Person" För långt

namn = "Pelle Person" Inte tillräckligt förklarande

n = "Pelle Person" Förklarar inte alls

Tal och andra datatyper

Variabler kan vara andra typer av textsträngar (På engelska kallas det för strings). Om man vill lagra ett tal skrivet man
heltal = 4

På liknade sätt skriver man decimaltal så här. Tänk på att använda punkt (.) istället för decimalkomma (,).

decimaltal = 5.34
Om man vill summera dessa två tal och lägga summan i en ny varabel skriver man.
summa = heltal + decimaltal
Detta skulle ge fel i många andra programmeringsspråk men i Python kan man skriva så. I andra programmeringsspråk kan man inte summera ett heltal och ett decimaltal direkt
När du sätter hashtecken (#) framför kommer Python att ignorera koden när den tolkar koden. Detta kallas att kommentera koden.
Man kommenterar koden när man vill ge info till sig själv eller andra utvecklare. Man kan också använda kommentarer för att kommentera bort kod tillfälligt när man felsöker. 
#Variabel som lagrar ett heltal
heltal = 4
print(heltal)

#Variabel som lagrar ett decimaltal
decimaltal = 5.34
print(decimaltal)

summa = heltal + decimaltal
print(summa)

ger utskriften

4
5.34
9.34

 Datatyp

 datatype (eng)

 Exempel

 Förkortning vid omvandling

 Heltal

 Integers

 ..., -2, -1, 0, 1, 2, 3...

 int()

Flyttal 

Floating-point numbers 

 ..., -1.23, -0.234, 0.3, 2,42 ...

 float()

 Strängar Strings 'a', 'abc, 'abc 123' 'Hej!' srt()

Operatorer

5 + 4 kallas för uttryck (eng. expression). Ett uttryck består av värden (5 och 4) (en. value) och operator (+)
 Operator Operation Exempel    Blir Prioritet
 ** Exponent     2 ** 4 16 1
 % Modulus / Rest 12 % 5 2 2
 // Heltals division 12 // 5 2 2
 / Division 12 / 5 2.4 2
 * Multiplikation  4 * 3 12 2
 -  Subtraktion 5 - 3 2 3
 +  Addition 3 + 3 6 3

Skriv in koden nedan i en ny fil och kalla den operatorer.py. Försök att tänka ut va
d svaret blir innan du kör programmet. Gör gärna medvetna fel så du kan förstår hur felmeddelandet blir.
Precis som i matematik så har utförs olika operatorer i olika prioritet och från vänster till höger
Öppna IDLE under Python. I den kan du testa mindre kodstycken utan att lägga dem i en py-fil.
Testa att skriva in detta. Röva också de andra operatorerna
>>> 3 + 2 * 5
13 >>> (3 + 2) * 5 25 >>> 21/5 4.2 >>> 21//5 4 >>> 21%5 1



#Exponent
tal = 2 ** 4
print('Basen 2 och exponenten 4 blir ' + str(tal))

#Modulus / Rest. Tänk 12/5 = två hela och två femtedelar.
# Två är vad som blir i täljaren när man
# gör om bråkform till blandad form
tal = 12 % 5
print('12 dividerat på 5 ger resten ' + str(tal))

#Heltals division. Hur många hela gånger går det?
tal = 12 // 5
print('12 dividerat på 5. Det går ' + str(tal) +' hela gånger')

#Division. Precis som vanlig division blir det ett decimaltal
tal = 12 / 5
print('12 dividerat på 5 blir ' + str(tal))

#Multiplikation
tal = 4 * 3
print('4 multiplicerat med 3 blir ' + str(tal))

#Subtraktion
tal = 5 - 3
print('5 subtraherat med 3 blir ' + str(tal))

#Addition
tal = 3 + 3
print('3 adderat med 3 blir ' + str(tal))

När man skriver kod = annan_kod kallas det tilldelning (eng. assignment). Tänk så här. Det som står till höger har ett värde som ska tilldelas (kopieras) till variabeln till vänster om likamed tecknet. 

Skapa en ny fil och kalla den tilldelning.py. Skriv in koden nedan. Ändra gärna talen och försök tänka ut hur svaret ska bli.
talA = 3
talB = 4
print('talA är ' + str(talA) + ' och talB är '+str(talB))

talA = talB #nu är talA: 4 och talB är fortfarande 4
print('talA är ' + str(talA) + ' och talB är '+str(talB))

talA = 6 + talB #nu är talA: 10 (6 + 4)
print('talA är ' + str(talA) + ' och talB är '+str(talB))

talA = talA + 2 #nu är A: 12 (10+2)
print('talA är ' + str(talA) + ' och talB är '+str(talB))

Kommentarer 

För att underlätta för dig själv och andra som läser din kod ska man skriva kommentarer som förklarar koden. Exakt hur mycket ska man kommentera och hur ska man kommentera? Jag rekommenderar att man går till Pythons Style Guide for Python Code som ser hur man ska kommentera. Jag sammanfattade det viktigaste sakerna här:
  • Skriv inte kommentarer som motsäger andra kommentarer. 
  • Kom ihåg att uppdatera kommentarerna när du ändrar i koden
  • Skriv kommentarer med hela meningar.
  • Om du kommer från icke engelsktalande länder skriv ändå kommentarer på engelska om du inte är 120% säker att endast de som kan läsa exempelvis svenska kommer att läsa kommentarerna
Om du vill kommentera en rad sätter man # framför raden. Då kommer Python ignorera den raden när den översätter koden till maskinkod.
#Raden nedan skriver ut ordet Hello
print('Hello')
För att kommentera flera rader bör man sätta tre (') eller tre (")
'''
En rad
En rad till
Ytterligare en rad
'''

Strängar

Binda samman strängar

I ett exemplet tilldelning.py ovan finns det rader som ser ut så här print('talA är ' + str(talA)).
När man ska skriva ut värdet i en variabel tillsammans med en textsträng måstre man sätta ett plustecken (+) mellan variabeln och strängen. Dettas kallas konkatenering. 
Variablerna i exemplet lagrar tal och om man skulle skrivit print('talA är ' talA) skulle man få ett fel. Det beror på att Python måste först omvandla talA till en sträng med str().


I Python kan man man multiplicera en sträng och då få samma sträng det antalet man multiplicerat med
>>> 'Python'*5
'PythonPythonPythonPythonPython'

Spara filen nedan som om_mig.py

'''
Detta Pythonprogram frågar efter användarens för och efternamn
Sedan räknar det ut när användaren är född och hur många bokstäver förnamnet
'''

print('Hej')
print('Vad är ditt förnamn')
#Med funktionen input() väntar Python på att användaren ska mata in något från tangetbordet
fornamn = input()

print('Vad är ditt efternamn')
efternamn = input()

#När man lägger till title() till en sträng görs en kopia av strängen och kopian skrivs ut med fösta bokstaven stor.
#Dock ändras inte ursprungsvariablen
print('Hej! ' + fornamn.title() + ' ' + efternamn.title())

# len(fornamn) kollar hur många tecken fornamn har och ger ett tal och med str() ändras talet till en sträng
print('Ditt förnamn: '+ fornamn.title() + ' har ' + str(len(fornamn)) + ' bokstäver')







Comments