# Övningar till kursen

Under den här fliken samlas samtliga övningar till kursen. Istället för att navigera bland de andra flikarna är samtliga övningar samlade här. 

Tabellen nedan visar var övningar till de olika avsnitten finns.

```{list-table}
:header-rows: 1

* - Avsnitt
  - Innehåll
  - Nummer
* - Grundläggande programmering
  - print-satsen, variabler och tilldelningar, datatyper och typkonverteringar, input-satsen.
  - *1.1-1.10*
* - Satser
  - if- och else-satsen, elif-satsen, logiska uttryck.
  - *2.1-2.7*
* - Listor
  - Listor och relaterade funktioner till listor.
  - *3.1-3.16*
* - Loopar
  - for-loopen, range-funktionen, listor och for-loopar, while-loopen.
  - *4.1-4.18*
* - Turtles
  - Rita simpel grafik med hjälp av turtle-modulen.
  - *5.1-5.10*
* - Funktioner
  - Deklarera och använda funktioner.
  - *6.1-6.13*
* - Lexikon
  - Deklarera och använda lexikon.
  - *7.1-7.4*
* - Klasser
  - Deklarera och använda klasser, metoder, arv av klasser.
  - *8.1-8.20*
* - Projekt i programmering
  - Lösa diverse projekt i programmering
  - Onumrerade
* - Repetition inför klasser
  - Repetitionsuppgifter anpassade för att förbereda inför att lära sig klasser.
  - *1-11*
```

## 1. Grundläggande programmering
```{include} grundläggande.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 2. Satser

```{include} satser.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 3. Listor

```{include} listor.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```
## 4. Loopar

```{include} loopar.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 5. Turtles

```{include} turtle.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 6. Funktioner

```{include} funktioner.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 7. Lexikon

```{include} lexikon.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 8. Klasser

```{include} klasser.md
:start-after: <!-- start-övningar -->
:end-before: <!-- end-övningar -->
```

## 9. Projekt i programmering

```{include} merfunktioner.md
:start-after: <!-- start-projekt -->
:end-before: <!-- end-projekt -->
```
 	
```{include} datahantering.md
:start-after: <!-- start-projekt -->
:end-before: <!-- end-projekt -->
```

```{include} lexikon.md
:start-after: <!-- start-projekt -->
:end-before: <!-- end-projekt -->
```

## 8. Repetition inför klasser

### Övning 1
Skriv en funktion factorial(n) som returnerar fakulteten av n.

```{admonition} Tips	
:class: Hint dropdown

Använd en `for`-loop.
```

### Övning 2
Skriv en funktion remove_duplicates(lst) som tar en lista och returnerar en ny lista utan dubbletter.

```{admonition} Tips
:class: Hint dropdown

Använd en `for`-loop, samt `set` funktionen
```

### Övning 3
Skriv ett program som frågar användaren efter en temperatur i Celsius och skriver ut om det är "Varmt", "Lagom" eller "Kallt" beroende på värdet.

```{admonition} Tips
:class: Hint dropdown

Använd en `if`-sats.
```

### Övning 4
Skriv en funktion word_count(sentence) som räknar antalet ord i en given mening.

```{admonition} Tips
:class: Hint dropdown

Använd först `.split(' ') och sedan en `for`-loop.
```

### Övning 5
Skriv en funktion find_longest_word(words) som tar en lista med ord och returnerar det längsta ordet.

```{admonition} Tips
:class: Hint dropdown

Använd först `.split(' ') och sedan `len()`
```

### Övning 6
Skriv en funktion is_perfect_square(n) som returnerar True om n är ett perfekt kvadrat, annars False.

```{admonition} Tips
:class: Hint dropdown

Använd typkonverteringar.
```

### Övning 7
Skapa en dictionary där nycklarna är ämnen (t.ex. "Matematik", "Historia") och värdena är betyg (t.ex. 5, 4). Skriv ut alla ämnen med betyg över 3.

```{admonition} Tips
:class: Hint dropdown

Gå till lexikonfliken på mentiphy och använd tipsen!
```

### Övning 8
Importera modulen random och generera ett slumpmässigt tal mellan 1 och 100.

```{admonition} Tips
:class: Hint dropdown

Använd `random.randint(a, b)`.
```


### Övning 9
Importera modulen random, skapa en funktion som tar ett antal element som input. Funktionen returnerar medelvärdet av de 100 slumpmässiga talen.

```{admonition} Tips
:class: Hint dropdown

Använd `random.randint(a, b)`, samt en `for`-loop.
```

### Övning 10
Skapa en dictionary med fem olika länder som nycklar och deras huvudstäder som värden. Skriv ut huvudstaden för ett specifikt land.

```{admonition} Tips
:class: Hint dropdown

Gå till lexikonfliken på mentiphy och använd tipsen!
```

### Övning 11
Skapa ett spel där användaren anger en gissning mellan 0-100. Om gissningen är under det rätta svaret svarar programmet "Lägre!" och om gissningen är under det rätta svaret svarar programmet "Större!". När gissningen är korrekt avslutas spelet. Låt det korrekta svaret genereras av en funktion, en gissning används av en funktion och allting ska sedan skrivas i en main(funktion).

```{admonition} Tips
:class: Hint dropdown

Uppgiften liknar en av projekten, lös problemet och rådfråga på vägen!
```

