Göm menyn

Matematiska operationer och variabler

Alla program hanterar värden av olika slag. De grundläggande värdena är heltal, flyttal och sanningsvärden. Varje värde har en datatyp. Ofta säger man bara typ istället för datatyp. Det betyder att Python är ett typat språk. Det här avsnittet går igenom dessa tre grundläggande datatyperna, vilka värden de kan ta och vilka operationer man kan göra på dem.

Olika sorters tal

I de flesta programmeringsspråk finns det några olika typer av tal. Python har heltal och flyttal.

Heltal (eng. integer)

Heltal förkortas vanligtvis int, även så i Python. De är diskreta och svarar på frågan "hur många?". I Python skriver man heltal precis som vanligt, till exempel 2, 4, 4711.

Dokumentation

Flyttal (eng. float)

I Python kallas flyttal för float (efter det engelska namnet). De är reella tal och svarar på frågan "hur mycket?". I Python skrivs de med en decimalpunkt (inte kommatecken), till exempel 2.0, 3.14, eller om man har stora eller små tal 6.022e+23 vilket betyder 6.022 * 10^23.

Det är viktigt att skilja flyttal och heltal åt, eftersom de lagras på olika sätt. Men i många fall kan Python växla automatiskt åt oss. Så fort ett flyttal finns med i ett uttryck kommer uttrycket att ge ett flyttal. Vidare så kommer även alla uttryck med "vanlig" division (ej den speciella operatorn // för heltalsdivision) att ge ett flyttal, även om täljare och nämnare är heltal och divisionen går jämt ut. Uttrycket 6/2 ger alltså resultatet 3.0, inte heltalet 3. Så länge ingen division förekommer så kommer ett uttryck med heltal endast ge heltal.

Dokumentation

Vad kan man göra med tal?

Tal är inte så användbara om man inte kan räkna med dem. För detta har python flera "operatorer" som utför beräkningar på dem.

Operatorer

  • + - * / (de fyra räknesätten)
  • ** (upphöjt till)
  • // (heltalsdivision)
  • % modulo (rest vid heltalsdivision)

Python har även flera matematiska funktioner inbyggt. En funktion anropas på samma sätt som den skrivs inom matematiken, f(indata).

Inbyggda funktioner

  • abs() absolutbeloppet (returnerar samma taltyp som in-värdet har)
  • round() avrundning (returnerar ett heltal)

Några exempel

>>> 1 + 1.0
2.0
>>> 2 ** 3
8
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
>>> 10 % 3
1
>>> abs(-4711)
4711
>>> round(3.14)
3

Sanningsvärden

Tal är användbara när man vill göra matematiska beräkningar, men när man programmerar vill man också uttrycka logiska samband. För detta har python de logiska sanningsvärdena (eng. boolean) True och False

Precis som tal är det bra att kunna göra beräkningar på sanningsvärden. De operationer som oftast används på sanningsvärden är and (båda sidor är True), or (minst ett av värdena är True) och not not True = False och not False = True.

Precis som inom matematiken kan paranteser användas för att ändra vilken ordning som operationer ska utföras, både för sanningsvärden och matematiska operationer

>>> not True
False
>>> True and False
False
>>> True and not False
True
>>> (not False or False) and False
False

Sanningsvärden från tal

Sanningsvärden och tal är bra att ha, men oftast vill man kombinera och konvertera mellan dem. Konvertering från tal till sanningsvärden görs främst med hjälp utav jämförelse-operatorer.

  • < > mindre/större än
  • <= >= mindre/större eller lika med.
  • == lika med (observera att detta inte skrivs som = vilket används för tilldelning som vi kommer se senare)
  • != inte lika med

Observera att större eller lika med inte skrivs som => utan >=. För att komma ihåg vilken ordning tecknen ska komma i kan man tänka att man skriver som man säger det större än (>) eller lika med (=).

>>> 3.5 > 5
False
>>> 3.5 >= 3.5
True
>>> 5 != 3
True
>>> 5 > 3 and 5 <= 6
True

Variabler

Det vi nu introducerat kan användas för att låta python agera som en enkel miniräknare vilket kan kännas rätt långt ifrån ett program som ritar grafik, eller en robot som tar smarta beslut. Även om det är sant så är sanningsvärden och tal en av byggstenarna för det. För att komma närmare ett riktigt program behöver vi dock introducera några fler koncept vilket kommer att göras gradvis under kursen.

Det första konceptet vi kommer att behöva är variabler. Variabler i python liknar de variabler som används inom matematiken med vissa skilnader.

Precis som inom matematiken har en variabel ett namn (som inom programmering kan vara mer än ett tecken) och ett värde som kan vara ett sanningsvärde, ett tal eller någon annan typ av data som vi introducerar senare i kursen.

För att skapa en variabel används operatorn =. Variabelns namn skrivs först, följt av värdet variabeln ska få. I python-prompten kan värdet skrivas ut genom att skriva variabelns namn utan något annat i prompten.

>>> first_prime = 2
>>> first_prime
2
>>> message = "Hello, world"
>>> print(message)
"Hello world"

Att spara information är inte så användbart om man inte senare kan komma åt informationen. Att komma åt informationen i en variabel är väldigt enkelt: Överallt där man kan skriva ett värde direkt kan en variabel användas istället.

>>> 5 + 3
8
>>> five = 5
>>> five + 3
8

Resultatet av en beräkning kan också tilldelas till en variabel:

>>> sum = 5 + 8
>>> sum
13
>>> distance_squared = 5**2 + 4**2
>>> distance_squared
41
>>> price_lemon = 5
>>> price_lime = 3
>>> should_buy_lemon = price_lemon <= 4
>>> should_buy_lemon
False
>>> should_buy_lime = not should_buy_lemon and price_lime <= 3
>>> should_buy_lime
>>> True

Funktioner

Vad är egentligen en funktion? Vi har redan sett några stycken, hello_world till exempel. En funktion är ett kodblock som man definierar för att kunna återanvända vid ett senare tillfälle. De kan innehålla variabler, operander, loopar, nästan allting faktiskt.

För att skapa en funktion så skriver man def följt av namnet på sin funktion (samma krav som för variabler), och avslutar med två parenteser och ett kolon. Varför vi behöver ange parenteser kommer vi till alldeles strax.

# Här definierar vi vår funktion och beskriver för Python vad den ska göra
def hello_world():
    print("Hello world")

# För att det ska hända något så behöver vi anropa funktionen
hello_world()

Argument

hello_world är inte speciellt intressant, vi skulle ju lika gärna kunnat skriva print direkt utan att använda oss av någon funktion. En av de saker som gör funktioner användbara på riktigt är när vi kan skicka argument till dem. Argument är som värden som skickas till en funktion och är ett bra sätt att göra en funktion mer generell så vi kan återvända den flera gånger. Namnen på argumenten som en funktion tar emot kallas för parametrar och skrivs innanför parenteserna när vi definierar funktionen. Nedan har vi funktionen say_hello som tar parametern name. Inuti say_hello finns alltså variabeln name, som vid anropet får det värde som anroparen skickar med, inte ett värde som är angivet inuti funktionen. Funktioner kan även ha mer än en parameter:

def say_hello(name):
    print("Hello ", name, "!")

def print_difference(val1, val2):
    print(val1 - val2)

När vi sedan vill anropa funktionen så kan vi alltså göra det med olika argument. Argumenten till en funktion skrivs inom parenteserna när vi anropar funktionen. Det första argumentet som skrivs i anropet ges till den första parametervariabeln, det andra till den andra parametervariabeln och så vidare.

>>> say_hello("Sven-Ingvars")
"Hello Sven-Ingvars!"

>>> say_hello("Ingrid")
"Hello Ingrid!"

>>> print_difference(5,3):
2

Return-satsen

Hittils har vi bara sett funktioner som skriver ut något på skärmen med print. Men tänk om vi skulle vilja ha ett resultat tillbaka istället? Då behöver vi return, det return gör är att avsluta funktionen och skicka tillbaka (returnera) resultatet till den som anropade. return är således oftast mer användbart eftersom vi då kan använda resultatet i andra beräkningar, som argument till andra funktioner och så vidare.

Nedan har vi ett exempel som räknar ut omkretsen på en cirkel:

def circumference(radius):
    pi = 3.14
    return 2 * pi * radius

Vi kan nu anropa funktionen på följande sätt och tilldela x returvärdet:

>>> x = circumference(5)
>>> print(x)
31.4

Om circumference(5) istället hade skrivit ut värdet 31.4, hade vi inte kunnat tilldela värdet till variabeln x.

Tillhörande quiz

Finnes här


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2021-12-03