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

Legg til LF for ØF5

parent c0032a08
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Øvingsforelesning 5 - TDT4110
### Repetisjon for IØ1
%% Cell type:markdown id: tags:
#### Oppgave 1
Vi ønsker å regne ut både overflatearealet og volumet av en boks.
1. Ta inn verdier for `lengde`, `bredde` og `høyde` fra bruker.
2. Print ut `Volumet er {volum} og arealet er {areal}`
$$V = l w h$$
$$A = 2(lw + wh + hl)$$
%% Cell type:markdown id: tags:
%% Cell type:code id: tags:
``` python
lengde = float(input("Skriv inn lengde: "))
bredde = float(input("Skriv inn bredde: "))
hoyde = float(input("Skriv inn høyde: "))
volum = lengde * bredde * hoyde
areal = 2 * (lengde * bredde + bredde * hoyde + hoyde * lengde)
print(f"Volumet er {volum} og arealet er {areal}")
```
%% Output
Volumet er 1.0 og arealet er 6.0
%% Cell type:markdown id: tags:
#### Oppgave 2: Sekunder til tid
1. La brukeren skrive inn et antall sekunder `s`
2. Dette skal konverteres til formatet `t:m:s`, og printes ut. Her står `t` for timer, `m` for minutter og `s` for sekunder. Hvis tiden er mindre enn 1 time skal den printe `m:s`. Ellers skal den printe `t:m:s`.
Eks. på riktig output:
- 45 -> `0:45`
- 143 -> `2:23`
- 3729 -> `1:02:09`
Legg merke til at hvis antall sekunder (og minutter hvis det er over en time) er mindre enn 10 skal det printes ut en 0 foran.
%% Cell type:code id: tags:
``` python
total_sekunder = int(input("Skriv inn antall sekunder: "))
sekunder = total_sekunder % 60
total_minutter = total_sekunder // 60
minutter = total_minutter % 60
timer = total_minutter // 60
if sekunder < 10:
formatert_sekunder = f"0{sekunder}"
else:
formatert_sekunder = str(sekunder)
if timer == 0:
print(f"{minutter}:{formatert_sekunder}")
else:
if minutter < 10:
formatert_minutter = f"0{minutter}"
else:
formatert_minutter = str(minutter)
print(f"{timer}:{formatert_minutter}:{formatert_sekunder}")
```
%% Output
1:00:00
%% Cell type:markdown id: tags:
#### Oppgave 3: Bergen prisrabatt
Lag et Python-program som beregner en prisrabatt basert på kjøpesummen til en kunde. Bruk følgende regler for rabattberegning:
- Hvis kjøpesummen er 1000 kr eller mer, skal kunden få 10% rabatt.
- Hvis kjøpesummen er mellom 500 kr (inkludert) og 999,99 kr, skal kunden få 5% rabatt.
- Ellers skal kunden ikke få noen rabatt.
Programmet skal be brukeren om å angi kjøpesummen, beregne rabatten og deretter vise den endelige prisen etter rabatten er trukket fra.
%% Cell type:code id: tags:
``` python
kjopesum = int(input("Skriv inn kjøpesum: "))
if kjopesum >= 1000:
kjopesum *= 0.9 # Trekk fra 10%
elif kjopesum >= 500: # Må være mindre enn 1000 pga forrige betingelse, så trenger kun sjekke om mer enn 500
kjopesum *= 0.95 # Trekk fra 5%
print(f"Kjøpesum med rabatt: {kjopesum},-")
```
%% Output
Kjøpesum med rabatt: 900.0
%% Cell type:markdown id: tags:
#### Oppgave 4: Multiplikasjonstabell
Lag et Python-program som genererer en multiplikasjonstabell for et valgt tall.
Programmet skal tillate brukeren å angi tallet de ønsker å generere multiplikasjonstabellen for, og deretter skal den generere og vise multiplikasjonstabellen for dette tallet fra 1 til og med 10.
I tillegg skal programmet beregne og vise gjennomsnittet av tallene i tabellen.
%% Cell type:code id: tags:
``` python
tall = int(input("Skriv inn et tall: "))
total = 0
for i in range(1, 11):
verdi = tall * i
total += verdi
print(f"{i} * {tall} = {verdi}")
gjsnitt = total / 10
print(f"Gjennomsnittet er {gjsnitt}")
```
%% Output
1 * 3 = 3
2 * 3 = 6
3 * 3 = 9
4 * 3 = 12
5 * 3 = 15
6 * 3 = 18
7 * 3 = 21
8 * 3 = 24
9 * 3 = 27
10 * 3 = 30
Gjennomsnittet er 16.5
%% Cell type:markdown id: tags:
### Oppgave 5: Telle bokstaver
Lag et Python-program som ber brukeren om å skrive inn en setning, og deretter teller antall bokstaver (alfabetiske tegn) i setningen. Programmet skal også telle antall mellomrom i setningen.
**Hint:** Benytt metodene str#isalpha() og str#isspace()
%% Cell type:code id: tags:
``` python
setning = input("Skriv inn en setning: ")
alfabetisk = 0
mellomrom = 0
for ch in setning:
if ch.isalpha():
alfabetisk += 1
elif ch.isspace():
mellomrom += 1
print(f"Alfabetiske tegn: {alfabetisk}")
print(f"Mellomrom: {mellomrom}")
```
%% Output
Alfabetiske tegn: 13
Mellomrom: 3
%% Cell type:markdown id: tags:
#### Oppgave 6: Hva er størst?
Lag et program som ber brukeren om et flyttall helt til brukeren skriver “avslutt”.
Når brukeren skriver “avslutt” skal programmet printe ut det største og det minste tallet av de tallene som er skrevet inn.
%% Cell type:code id: tags:
``` python
import math # Python-bibliotek som inneholder mye nyttige matteverktøyer
minst = math.inf # Sett til største mulig verdi slik at alle andre verdier er mindre
storst = -math.inf # Sett til minst mulig verdi slik at alle andre verdier er større
while True: # Lag en evig løkke. Legg merke til bruk at "break" senere!
command = input("Skriv inn et tall/kommando: ")
if command.lower() == "avslutt":
break # Stopper den evige løkken dersom "avslutt" blir skrevet inn
num = float(command) # Gjør om verdien fra string til float
# Gjør disse sjekkene som 2 separate if-blokker (i stedet for å bruke elif) for å
# håndtere det første tallet, som både er størst og minst
if minst > num:
minst = num
if storst < num:
storst = num
print(f"Største tall: {storst}")
print(f"Minste tall: {minst}")
```
%% Output
Største tall: 20.0
Minste tall: 5.0
%% Cell type:markdown id: tags:
#### Oppgave 7
Vi ønsker å forbedre løsningen vår fra oppgave 1 til å benytte to funksjoner for utregning. Lag funksjonene
- `get_volume(lenght, height, width)`
- `get_total_surface_area(length, height, width)`
$$V = l w h$$
$$A = 2(lw + wh + hl)$$
%% Cell type:code id: tags:
``` python
def get_volume(length, height, width):
return length * height * width
def get_total_surface_area(length, height, width):
return 2 * (length * height + width * height + height * length)
```
%% Cell type:markdown id: tags:
#### Oppgave 8: Mønster av tall
Lag et Python-program som ber brukeren om å oppgi et positivt heltall (n). Programmet skal deretter bruke nøstede for-løkker for å generere et mønster av tall som ser slik ut:
**n = 5:**
```
1
12
123
1234
12345
```
**n = 3:**
```
1
12
123
```
%% Cell type:code id: tags:
``` python
def print_pattern(n):
for i in range(1, n + 1):
for j in range(1, i + 1):
print(j, end="") # Ved å skrive end="" går vi ikke på ny linje
print() # Begynn på en ny linje
print_pattern(5)
print_pattern(3)
```
%% Output
1
12
123
1234
12345
1
12
123
%% Cell type:markdown id: tags:
#### Oppgave 9: Karakter til tall
Lag 2 funksjoner som gjør om mellom bokstavkarakter og tall:
- `convert_grade(grade)`
- `convert_score(score)`
| Karakter | Score |
| --- | --- |
| A | 5 |
| B | 4 |
| C | 3 |
| D | 2 |
| E | 1 |
| F | 0 |
%% Cell type:code id: tags:
``` python
def convert_grade(grade):
# Her kunne vi også benytte at ord("A") = 65 og ord("E") = 69
# Gjør om til stor bokstav først slik at vi slepper gjøre det i hver if-setning
grade = grade.upper()
if grade == "A":
return 5
elif grade == "B":
return 4
elif grade == "C":
return 3
elif grade == "D":
return 2
elif grade == "E":
return 1
else:
return 0 # Her kunne vi også laget en feilmelding eller lignende
def convert_score(score):
score = round(score) # Rund av til nærmeste heltall
if score == 5:
return "A"
elif score == 4:
return "B"
elif score == 3:
return "C"
elif score == 2:
return "D"
elif score == 1:
return "E"
else:
return "F"
```
%% Cell type:markdown id: tags:
### Oppgave 10: Karakterkalkulator
Du lurer på hva snittet ditt hos NTNU er. Bruk funksjonene fra forrige oppgave til å lage en snittkalkulator. Denne skal be om bokstavkarakterer til brukeren skriver “avslutt”, og deretter printe ut snittet av disse.
%% Cell type:code id: tags:
``` python
total = 0
count = 0
while True:
grade = input("Skriv inn en karakter: ")
if grade.lower() == "avslutt":
break
total += convert_grade(grade)
count += 1
avg = total / count
avg_grade = convert_score(avg)
print(f"Din gjennomsnittskarakter er {avg_grade}")
```
%% Output
Din gjennomsnittskarakter er B
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