Skip to content

Commit

Permalink
Update 4-rakneoperationer.md
Browse files Browse the repository at this point in the history
  • Loading branch information
linza79 authored Sep 6, 2024
1 parent e1c589a commit b34ee73
Showing 1 changed file with 74 additions and 74 deletions.
148 changes: 74 additions & 74 deletions data/osa-1/4-rakneoperationer.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ hidden: false
Efter den här delen

* kan du använda dig av variabler i olika slags räkneoperationer
* kan du hantera siffor i indata från användare
* kan du hantera tal i indata från användare
* kan du konvertera värden till olika grundläggande datatyper.

</text-box>

I de tidigare delarna har du sett exempel med enkla räkneoperationer. Följande tabell listar de mest allmänna operatorerna som kan användas för att räkna i Python:
I de tidigare delarna har du sett exempel med enkla räkneoperationer. Följande tabell listar de mest allmänna operatorerna som kan användas för att utföra beräkningar i Python:

| Operator | Betydelse | Exempel | Resultat |
|:--------:|---------------------------------|------------|----------|
Expand All @@ -26,16 +26,16 @@ I de tidigare delarna har du sett exempel med enkla räkneoperationer. Följande
| `%` | Rest | `9 % 2` |`1` |
| `**` | Potens | `2 ** 3` |`8` |

Ordningen för operationerna är bekant från matematiken: potensuttryck räknas först, sedan multiplikation och division, till sist addition och subtraktion. Ordningen kan ändras genom att använda parenteser.
Ordningen för operationerna är bekant från matematiken: potensuttryck beräknas först, sedan multiplikation och division, till sist addition och subtraktion. Ordningen kan ändras genom att använda parenteser.

Till exempel denna kodsnutt…
Till exempel resulterar denna kodsnutt…

```python
print(2 + 3 * 3)
print((2 + 3) * 3)
```

resulterar i följande utskrift:
… i följande utskrift:

<sample-output>

Expand Down Expand Up @@ -75,7 +75,7 @@ Viktindexet är 23.037177063642087

</sample-output>

Märk att Python också har operatorn `//`, för division med heltal som resultat. Om operanderna är heltal, kommer resultatet också att vara ett heltal. Resultatet rundas ner till närmaste heltal. Exempelvis detta program…
Märk att Python också har operatorn `//` för division med heltal som resultat. Om operanderna är heltal, kommer resultatet också att vara ett heltal. Resultatet avrundas neråt till närmaste heltal. Exempelvis skriver detta program…

```python
x = 3
Expand All @@ -85,7 +85,7 @@ print(f"/-operatorn {x/y}")
print(f"//-operatorn {x//y}")
```

skriver ut följande:
… ut följande:

<sample-output>

Expand All @@ -94,11 +94,11 @@ print(f"//-operatorn {x//y}")

</sample-output>

## Nummer som indata
## Tal som indata

Vi har redan använt oss av `input`-funktionen för att läsa in strängar som användaren matat in. Samma funktion kan också användas för att läsa in nummer, men då måste strängen som funktionen returnerar först konverteras till någon av de datatyper som representerar ett nummer i programkoden. I den förra delen konverterade vi heltal till strängar med `str`-funktionen. Nu gäller samma princip, men vi ska använda en annan funktion eftersom vi gör konverteringen åt motsatt håll.
Vi har redan använt oss av `input`-funktionen för att läsa in strängar som användaren matat in. Samma funktion kan också användas för att läsa in tal, men då måste strängen som funktionen returnerar först konverteras till någon av de datatyper som representerar ett tal i programkoden. I den förra delen konverterade vi heltal till strängar med `str`-funktionen. Nu gäller samma princip, men vi ska använda en annan funktion eftersom vi gör konverteringen åt motsatt håll.

En sträng kan konverteras till ett heltal med funktionen `int`. Det följande programmet frågar användarens födelseår och sparar det i variabeln `indata_strang`. Programmet skapar därefter variabeln `ar` som innehåller året konverterat till heltal. Efter det går det att räkna `2021 - ar`, med hjälp av det värde användaren angett.
En sträng kan konverteras till ett heltal med funktionen `int`. Programmet nedan ber användaren mata in sitt födelseår och sparar det i variabeln `indata_strang`. Programmet skapar därefter variabeln `ar` som innehåller året konverterat till heltal. Efter det går det att räkna `2021 - ar`, med hjälp av det värde användaren angett.

```python
indata = input("Vilket är ditt födelseår? ")
Expand All @@ -113,14 +113,14 @@ Din ålder i slutet av 2020: 25

</sample-output>

Allt som oftast behöver man inte skapa två separata variabler (som ovan) för att läsa en siffra från användaren. Istället kan användarens text läsas in och konverteras till heltal samtidigt:
Vanligen behöver man inte skapa två separata variabler (som ovan) för att läsa en siffra från användaren. Istället kan användarens text läsas in och konverteras till heltal samtidigt:

```python
ar = int(input("Vilket är ditt födelseår? "))
print(f"Din ålder i slutet av 2020: {2020 - ar}" )
```

En sträng kan också konverteras till flyttal. Det sker med funktionen `float`. Det här programmet frågar användaren om hennes eller hans längd och vikt, och använder svaren för att räkna ut BMI:
En sträng kan också konverteras till flyttal. Det sker med funktionen `float`. Det här programmet frågar användaren om hennes eller hans längd och vikt, och använder svaren för att räkna ut viktindexet:

```python
langd = float(input("Ange längd: "))
Expand All @@ -144,7 +144,7 @@ Viktindexet är 28.02137829801649

<in-browser-programming-exercise name="Siffra gånger fem" tmcname="osa01-13_x_ganger_fem">

Skapa ett program som frågar efter ett tal från användaren. Programmet ska skriva ut talet multiplicerat med fem.
Skapa ett program som frågar efter ett tal av användaren. Programmet ska skriva ut talet multiplicerat med fem.

Så här ska programmet fungera:

Expand Down Expand Up @@ -173,25 +173,25 @@ Hej Sandro Syntetisk, du är 30 år i slutet av 2020

## Att använda variabler

Låt oss kika på ett program som räknar summan av tre siffror som användaren anger:
Låt oss kika på ett program som beräknar summan av tre tal som användaren anger:

```python
siffra1 = int(input("Siffra ett: "))
siffra2 = int(input("Siffra två: "))
siffra3 = int(input("Siffra tre: "))
tal1 = int(input("Tal ett: "))
tal2 = int(input("Tal två: "))
tal3 = int(input("Tal tre: "))

summa = siffra1 + siffra2 + siffra3
print(f"Summan av siffrorna: {summa}")
summa = tal1 + tal2 + tal3
print(f"Summan av talen: {summa}")
```

Här har vi ett exempel på när vi kör programmet:

<sample-output>

Siffra ett: **5**
Siffra två: **21**
Siffra tre: **7**
Summan av siffrorna: 33
Tal ett: **5**
Tal två: **21**
Tal tre: **7**
Summan av talen: 33

</sample-output>

Expand All @@ -200,85 +200,85 @@ Programmet använder fyra variabler, men i det här fallet skulle det faktiskt r
```python
summa = 0

nummer = int(input("Siffra ett: "))
summa = summa + nummer
tal = int(input("Tal ett: "))
summa = summa + tal

nummer = int(input("Siffra två: "))
summa = summa + nummer
tal = int(input("Tal två: "))
summa = summa + tal

nummer = int(input("Siffta tre: "))
summa = summa + nummer
tal = int(input("Tal tre: "))
summa = summa + tal

print(f"Summan av siffrorna: {summa}")
print(f"Summan av talen: {summa}")
```

Nu läses alla siffor som användaren ges in i en och samma variabel, `nummer`. Värdet på variabeln `summa` ökas med värdet på variabeln nummer varje gång användaren skriver in ett nytt nummer.
Nu läses alla tal som användaren ges in med hjälp av en och samma variabel, `tal`. Värdet på variabeln `summa` ökas med värdet på variabeln tal varje gång användaren skriver in ett nytt tal.

Vi tar en lite närmare titt på instruktionen:

```python
summa = summa + nummer
summa = summa + tal
```

Här adderas värdena i variablerna `summa` och `nummer` ihop – för att lagras i variabeln summa. Till exempel om värdet på `summa` är `3` och värdet på `nummer` är `2`, kommer värdet på summa att vara `5` efter att instruktionen körts.
Här adderas värdena i variablerna `summa` och `tal` – för att lagras i variabeln summa. Till exempel om värdet på `summa` är `3` och värdet på `tal` är `2`, kommer värdet på summa att vara `5` efter att instruktionen körts.

Att öka på värdet hos en variabel är en vanlig operation. Därför finns det en liten genväg till förfogande. Den här notationen fungerar i praktiken som instruktionen ovan:
Att öka på värdet hos en variabel är en vanlig operation. Därför finns det en liten genväg. Den här notationen fungerar i praktiken som instruktionen ovan:

```python
summa += nummer
summa += tal
```

Det här tillåter oss skriva programmet lite mer koncist:

```python
summa = 0

nummer = int(input("Siffra ett: "))
summa += nummer
tal = int(input("Tal ett: "))
summa += tal

nummer = int(input("Siffra två: "))
summa += nummer
tal = int(input("Tal två: "))
summa += tal

nummer = int(input("Siffta tre: "))
summa += nummer
tal = int(input("Tal tre: "))
summa += tal

print(f"Summan av siffrorna: {summa}")
print(f"Summan av talen: {summa}")
```

Egentligen behöver vi inte alls variabeln `nummer`. Vi kan också behandla siffrorna som användaren anger på följande sätt:
Egentligen behöver vi inte alls variabeln `tal`. Vi kan också behandla talen som användaren matar in på följande sätt:

```python
summa = 0

summa += int(input("Siffra ett: "))
summa += int(input("Siffra två: "))
summa += int(input("Siffra tre: "))
summa += int(input("Tal ett: "))
summa += int(input("Tal två: "))
summa += int(input("Tal tre: "))

print(f"Summan av siffrorna: {summa}")
print(f"Summan av talen: {summa}")
```

I praktiken beror antalet variabler som behövs på situationen. Om man behöver minnas enskilda värden som användaren anger, är det inte möjligt att "återanvända" samma variabel för att läsa in olika värden. Här är ett exempel på en sådan situation:

```python
siffra1 = int(input("Siffra ett: "))
siffra2 = int(input("Siffra två: "))
tal1 = int(input("Tal ett: "))
tal2 = int(input("Tal två: "))

print(f"{siffra1} + {siffra2} = {siffra1+siffra2}")
print(f"{tal1} + {tal2} = {tal1+tal2}")
```

<sample-output>

Siffra ett: **2**
Siffra två: **3**
Tal ett: **2**
Tal två: **3**
2 + 3 = 5

</sample-output>

Å andra sidan har programmet inte en namngiven variabel där summan av de två angivna värdena skulle lagras.
Å andra sidan har programmet inte en namngiven variabel där summan av de två angivna värdena skulle lagras.

Att "återanvända" en variabel lönar sig bara då när det finns ett tillfälligt behov att lagra värden av samma typ och orsak – till exempel då man summar ihop siffror.
Att "återanvända" en variabel lönar sig bara då när det finns ett behov att lagra värden av samma typ och orsak – till exempel då man adderar tal.

I följande exempel används variabeln `data` för att lagra användarens namn och därefter dess ålder. Det finns absolut ingen logik i det!
I följande exempel används variabeln `data` för att lagra användarens namn och därefter hens ålder. Det finns ingen logik i att göra så!

```python
data = input("Vad är ditt namn? ")
Expand All @@ -291,16 +291,16 @@ data = int(input("Vad är din ålder? "))
En bättre idé vore att använda skilda variabler med namn som tydligt beskriver deras funktion:

```python
nimi = input("Vad är ditt namn? ")
print("Hej " + nimi + "!")
namn = input("Vad är ditt namn? ")
print("Hej " + namn + "!")

alder = int(input("Vad är din ålder? "))
# programmet fortsätter...
```

<in-browser-programming-exercise name="Dygn i sekunder" tmcname="osa01-15_dygn_i_sekunder">

Skapa ett program som frågar användaren om ett antal dagar. Programmet ska därefter räkna ut hur långa dessa dagar tillsammans är mätt i sekunder.
Skapa ett program som frågar användaren om ett antal dagar. Programmet ska därefter räkna ut hur många sekunder dessa dagar motsvarar.

Programmet ska fungera så här:

Expand Down Expand Up @@ -342,16 +342,16 @@ Produkten av talen är 30

<in-browser-programming-exercise name="Talens summa och produkt" tmcname="osa01-16_summa_produkt">

Skapa ett program som ber användaren att ge två siffror. Programmet ska räkna summan och produkten av dessa tal.
Skapa ett program som ber användaren mata in två tal. Programmet ska räkna summan och produkten av dessa tal.

Så här ska programmet fungera:

<sample-output>

Siffra 1: **3**
Siffra 2: **7**
Siffrornas summa 10
Produkten av siffrorna 21
Tal 1: **3**
Tal 2: **7**
Talens summa 10
Produkten av talen 21

</sample-output>

Expand All @@ -360,17 +360,17 @@ Produkten av siffrorna 21

<in-browser-programming-exercise name="Summa och medeltal" tmcname="osa01-17_summa_medeltal">

Skapa ett program som ber användaren att ange fyra siffror. Programmet ska räkna summan och medeltalet av dessa siffror.
Skapa ett program som ber användaren att ange fyra tal. Programmet ska räkna summan och medeltalet av dessa tal.

Så här ska programmet fungera:

<sample-output>

Siffra 1: **2**
Siffra 2: **1**
Siffra 3: **6**
Siffra 4: **7**
Summan av siffrorna är 16 och medeltalet är 4.0
Tal 1: **2**
Tal 2: **1**
Tal 3: **6**
Tal 4: **7**
Summan av talen är 16 och medeltalet är 4.0

</sample-output>

Expand All @@ -382,9 +382,9 @@ Summan av siffrorna är 16 och medeltalet är 4.0

Skapa ett program som uppskattar användarens genomsnittliga matkostnader.

Programmet frågar hur många gånger i veckan användaren besöker Unicafe och vad hon betalar för sin lunch där. Dessutom frågas också övriga matkostnader på veckonivå.
Programmet frågar användaren om hur många gånger i veckan hen besöker Unicafe och vad hen betalar för sin lunch där. Dessutom frågar programmet om övriga matkostnader på veckonivå.

Baserat på den här informationen räknar programmet de genomsnittliga matkostnaderna under en vecka samt en dag.
Baserat på den här informationen beräknar programmet de genomsnittliga matkostnaderna på dags- och veckobasis.

Så här ska programmet fungera:

Expand All @@ -404,7 +404,7 @@ Under en vecka 38.5 euro

<in-browser-programming-exercise name="Gruppindelning" tmcname="osa01-18_gruppindelning">

Gör ett program som frågar efter antalet studerande under en kurs samt storleken på en grupp. Programmet ska räkna hur många grupper bildas. En av grupperna kan vid behov ha färre medlemmar än den önskade gruppstorleken.
Gör ett program som frågar efter antalet studerande en kurs samt storleken på en grupp. Programmet ska beräkna hur många grupper som behöver bildas. En av grupperna kan vid behov ha färre medlemmar än den önskade gruppstorleken.

<sample-output>

Expand All @@ -424,10 +424,10 @@ Antalet grupper: 4

Tips: Använd dig av operatorn för heltalsdivision `//`

Tips 2: Om du inte hittar på en lösning kan du bekanta dig med if-satser, som presenteras i nästa del. De förenklar uppgiften avsevärt.
Tips 2: Om du inte hittar på en lösning kan du bekanta dig med villkorssatser (if-satser), som presenteras i nästa del. De förenklar uppgiften avsevärt.

</in-browser-programming-exercise>

Kertauskysely tämän osan asioihin liittyen:
Repetitionsfrågor till denna del:

<quiz id="7722d5cd-4b10-5b39-80cc-834d09f01ff2"></quiz>

0 comments on commit b34ee73

Please sign in to comment.