Skip to content
Snippets Groups Projects
Verified Commit 20e70ceb authored by Eirik Lorgen Tanberg's avatar Eirik Lorgen Tanberg
Browse files

Legg til LF for ØF4

parent 478eb6bd
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Øvingsforelesning 4 - TDT4110
### Løkker
%% Cell type:markdown id: tags:
### Oppgave 1 - Repetisjon
I denne oppgaven skal vi utvikle en funksjon som utfører konvertering fra Celsius til Fahrenheit. Deretter skal vi lage en graf som viser denne konverteringen over et temperaturområde fra -100C til 100C.
$$F = \frac{9}{5}C + 32$$
%% Cell type:code id: tags:
``` python
import numpy as np
import matplotlib.pyplot as plt
def convert_celsius_to_fahrenheit(celsius):
fahrenheit = 9/5 * celsius + 32
return fahrenheit
x = np.linspace(-100, 100, 200)
y = convert_celsius_to_fahrenheit(x)
plt.plot(x, y)
```
%% Output
[<matplotlib.lines.Line2D at 0x12775e750>]
%% Cell type:markdown id: tags:
## Eksempel 1 - Syntaks
%% Cell type:code id: tags:
``` python
# Dette er en "tuple". Vi skal se mer på det senere
sequence = (1, 3, 5, 7, 9, 11, 13)
for number in sequence:
print(number)
```
%% Output
1
3
5
7
9
11
13
%% Cell type:markdown id: tags:
## Eksempel 2 - `range()`
- `range(stop)`
- `range(start, stop)`
- `range(start, stop, step)`
%% Cell type:code id: tags:
``` python
for i in range(8):
print(i)
```
%% Output
0
1
2
3
4
5
6
7
%% Cell type:code id: tags:
``` python
for j in range(5, 10):
print(j)
```
%% Output
5
6
7
8
9
%% Cell type:code id: tags:
``` python
for k in range(0, 20, 2):
print(k)
```
%% Output
0
2
4
6
8
10
12
14
16
18
%% Cell type:code id: tags:
``` python
for i in range(4):
print("ITGK")
print("Ferdig!")
```
%% Cell type:markdown id: tags:
## Oppgave 2
Skriv et program som printer
1. Alle tallene fra 0 til og med 10
2. Alle tallene fra 10 til og med 20 bortsett fra 14
3. Alle tallene fra 10 til og med 20 baklengs (20 -> 10)
4. Alle partall fra 50 til og med 74
**Ekstraoppgave**
Print tall mellom 0 og 1 med intervall på 0.1
%% Cell type:code id: tags:
``` python
print("Oppgave 1")
for tall in range(11):
print(tall)
print("Oppgave 2")
for tall in range(10, 21):
if tall != 14:
print(tall)
print("Oppgave 3")
for tall in range(20, 9, -1):
print(tall)
```
%% Output
Oppgave 1
0
1
2
3
4
5
6
7
8
9
10
Oppgave 2
10
11
12
13
15
16
17
18
19
20
Oppgave 3
20
19
18
17
16
15
14
13
12
11
%% Cell type:code id: tags:
``` python
print("Oppgave 3")
for tall in range(20, 9, -1):
print(tall)
```
%% Output
Oppgave 3
20
19
18
17
16
15
14
13
12
11
10
%% Cell type:code id: tags:
``` python
for partall in range(50, 75, 2):
print(partall)
```
%% Output
50
52
54
56
58
60
62
64
66
68
70
72
74
%% Cell type:code id: tags:
``` python
for tall in range(0, 11):
print(tall / 10)
```
%% Output
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
%% Cell type:markdown id: tags:
## Oppgave 3
Skriv et program som
1. Summerer sammen tallene fra 4 til og med 20
2. Finner produktet av tallene fra 2 til og med 10
**Hint**
Bruk en variabel som kan holde resultatet
**Ekstraoppgave**
Summer opp partall og oddetall hver for seg
%% Cell type:code id: tags:
``` python
total = 0
for i in range(4, 21):
#total = total + i
total += i
print(total)
produkt = 1
for i in range(2, 11):
#produkt = produkt * i
produkt *= i
print(produkt)
```
%% Output
204
3628800
%% Cell type:markdown id: tags:
# Oppgave 4
Lag et program som tar inn tre tall fra brukeren, og skriver ut alle tallene **mellom de to første** (første inklusiv, andre eksklusiv) som er **delelige på det tredje**
**Hint**
`a % b`
**Ekstraoppgave**
Gjør det samme, men uten å iterere gjennom alle tallene mellom de to første
%% Cell type:code id: tags:
``` python
start = int(input("Skriv inn start: "))
stop = int(input("Skriv inn stop: "))
divisor = int(input("Skriv inn divisor: "))
for tall in range(start, stop):
if tall % divisor == 0:
print(tall)
```
%% Output
6
8
%% Cell type:markdown id: tags:
## Eksempel - `while`-løkke
Kjører kode **inntill en betingelse ikke lenger er oppfylt**
%% Cell type:code id: tags:
``` python
i = 0
# Printer "Hello" 5 ganger
while i < 5:
print("Hello")
i += 1
```
%% Output
Hello
Hello
Hello
Hello
Hello
%% Cell type:code id: tags:
``` python
i = 5
# Printer tallene fra 5 til 10
while i <= 10:
print(i)
i += 1
```
%% Output
5
6
7
8
9
10
%% Cell type:code id: tags:
``` python
i = 0
while i < 4:
print("ITGK")
i += 1
print("Ferdig!")
```
%% Output
ITGK
ITGK
ITGK
ITGK
Ferdig!
%% Cell type:markdown id: tags:
## Oppgave 5
Skriv et program som gjør følgende:
1. Tar inn et tall fra bruker
2. Summerer tallene fra 1 og oppover helt til summen overstiger tallet fra bruker
3. Skriver ut et hvert regnestykke til konsollen på formen `a + b = c`
**Ekstraoppgave:**
- Topp ved det siste tallet før summen overstiger tallet fra bruker
- Gi en feilmelding dersom brukeren skriver inn et negativt tall og be om et nytt
%% Cell type:code id: tags:
``` python
tall = int(input("Skriv inn et tall: "))
while tall <= 0:
print("Vennligst skriv inn et tall som er større enn 0!")
tall = int(input("Skriv inn et tall: "))
total = 0
i = 1
while total <= tall:
last_total = total
total += i
print(f"{last_total} + {i} = {total}")
i += 1
```
%% Output
Vennligst skriv inn et tall som er større enn 0!
Vennligst skriv inn et tall som er større enn 0!
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
6 + 4 = 10
10 + 5 = 15
15 + 6 = 21
21 + 7 = 28
28 + 8 = 36
36 + 9 = 45
45 + 10 = 55
55 + 11 = 66
66 + 12 = 78
78 + 13 = 91
91 + 14 = 105
%% Cell type:markdown id: tags:
## Oppgave 6
Lag en evig `while`-løkke som
1. Tar inn tall fra brukeren
2. Skriver ut kvadratet ($x^2$) og kvadratroten av tallet
**Hint**
$x^{1/2}$ eller [math.sqrt(x)](https://docs.python.org/3/library/math.html#math.sqrt)
**Ekstraoppgave**
- Dersom brukeren skriver "avslutt" skal løkken stoppe
- Dersom brukeren skriver inn et negativt tall, ikke skriv ut kvadratroten
%% Cell type:code id: tags:
``` python
kommando = input("Skriv inn en kommando: ")
while kommando.lower() != "avslutt":
tall = int(kommando)
kvadrat = tall ** 2
print(kvadrat)
if tall >= 0:
kvadratrot = tall ** (1/2)
print(kvadratrot)
kommando = input("Skriv inn en kommando: ")
print("Good bye!")
```
%% Output
4096
4096
8.0
Good bye!
%% Cell type:markdown id: tags:
## Oppgave 7
Lag et program som gjør følgende:
1. Tar inn et tall fra brukeren
2. Sjekker om tallet er likt et annet tall som du har bestemt på forhånd
- Dersom tallet er likt, skriver programmet ut "Du vant!"
3. Hvis tallene **ikke** er like: Si om det innskrevne tallet er større eller mindre enn det hemmelige tallet
4. Be brukeren om å skrive inn et nytt tall
**Ekstraoppgave**
- Skriv at tallet er *mye* større/mindre hvis det er mer enn 10 i differanse
- Gi brukeren 5 forsøk, og gi brukeren beskjed om hvor mange forsøk som er igjen
%% Cell type:code id: tags:
``` python
import random
fasit = random.randint(0, 1000)
print(f"Fasit: {fasit}")
forsok = 5
print(f"Du har {forsok} forsøk")
tall = int(input("Skriv inn et tall: "))
forsok -= 1
while forsok > 0 and tall != fasit:
if tall > fasit:
print("Du har skrevet inn et for stort tall!")
else:
print("Du har skrevet inn et for lite tall")
print(f"Du har {forsok} forsøk")
tall = int(input("Skriv inn et tall: "))
forsok -= 1
if tall == fasit:
print("Du vant!")
else:
print("Du tapte :(")
```
%% Output
Fasit: 814
Du har 5 forsøk
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[35], line 9
6 forsok = 5
8 print(f"Du har {forsok} forsøk")
----> 9 tall = int(input("Skriv inn et tall: "))
10 forsok -= 1
12 while forsok > 0 and tall != fasit:
ValueError: invalid literal for int() with base 10: ''
%% Cell type:markdown id: tags:
## Oppgave 8
- Skriv en `while`-løkke som ber om et tall fra bruker hver iterasjon og summerer tallene som er skrevet inn
- Gjør at programmet avsluttes dersom `-1` skrive inn (uten å legge -1 til i summen)
- Avslutt programmet dersom summen overgår 100 (men skriv ut siste summen)
**Ekstraoppgave**
La brukeren bestemme tallet programmet skal avsluttes når summen overgår
%% Cell type:code id: tags:
``` python
total = 0
while True:
tall = int(input("Skriv inn et tall: "))
if tall == -1:
break
total += tall
print(total)
if total > 100:
break
print("Good bye!")
```
%% Output
99
102
Good bye!
%% Cell type:markdown id: tags:
## Eksempel - tilfeldige tall
Dokumentasjon om [random#randrange](https://docs.python.org/3/library/random.html#random.randrange) og [random#randint](https://docs.python.org/3/library/random.html#random.randint)
%% Cell type:code id: tags:
``` python
import random
# Printer et tilfeldig tall mellom 1 og 10
rand_num_1 = random.randint(1, 10)
# Printer et tilfeldig tall mellom 1 og 9
rand_num_2 = random.randrange(1, 10)
print(rand_num_1, rand_num_2)
```
%% Cell type:markdown id: tags:
## Oppgave 9
- Lag et program som printer et antall tilfeldige tall mellom to tall brukeren skriver inn. Antallet skal også være gitt av brukeren.
**Hint**
```python
import random
random.randint(1, 10)
```
**Ekstraoppgave**
- Modifiser programmet til å printe ut hvor mange oddetall som ble laget til slutt
- Skriv ut gjennomsnittet av alle tallene
%% Cell type:code id: tags:
``` python
import random
tall1 = int(input("Skriv inn et tall: "))
tall2 = int(input("Skriv inn et tall: "))
tall3 = int(input("Skriv inn et tall: "))
for i in range(tall1):
tall = random.randint(tall2, tall3)
print(tall)
```
%% Output
87
118
66
112
92
%% Cell type:markdown id: tags:
## Oppgave 10
Du skal ha Multiple Choice eksamen med 10 spørsmål, og lurer på om du klarer å gjette deg til å stå!
- Lag et program som *10 ganger* gir deg sjansen til å gjette på et tall mellom 1 - 4 og lagrer det riktig svaret som en variabel med tilfeldig verdi før man gjetter
- Etter løkken, skriv ut hvor mange prosent riktig du hadde
**Hint**
```python
import random
random.randint(1, 10)
```
%% Cell type:code id: tags:
``` python
# Skriv kode her
```
%% Cell type:markdown id: tags:
## Oppgave 11
Lag et program som
1. Tar inn et heltall `max_rand_int` fra brukeren
2. Tar inn et heltall `target` fra brukeren
3. Genererer tilfeldige tall mellom 0 og `max_rand_int` helt til det genererer `target`
4. Printer hvert genererte tall
**Ekstraoppgave**
Utvid programmet til å til slutt printe hvor mange forsøk det trengte for å lage `target`
%% Cell type:code id: tags:
``` python
# Skriv kode her
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment