"print(f\"Volumet er {volum} og arealet er {areal}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Oppgave 2: Sekunder til tid\n",
"\n",
"1. La brukeren skrive inn et antall sekunder `s`\n",
"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`.\n",
"\n",
"Eks. på riktig output:\n",
"\n",
" - 45 -> `0:45`\n",
" - 143 -> `2:23`\n",
" - 3729 -> `1:02:09`\n",
"\n",
" 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",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1:00:00\n"
]
}
],
"source": [
"total_sekunder = int(input(\"Skriv inn antall sekunder: \"))\n",
"Lag et Python-program som beregner en prisrabatt basert på kjøpesummen til en kunde. Bruk følgende regler for rabattberegning:\n",
"\n",
" - Hvis kjøpesummen er 1000 kr eller mer, skal kunden få 10% rabatt.\n",
" - Hvis kjøpesummen er mellom 500 kr (inkludert) og 999,99 kr, skal kunden få 5% rabatt.\n",
" - Ellers skal kunden ikke få noen rabatt.\n",
"\n",
"Programmet skal be brukeren om å angi kjøpesummen, beregne rabatten og deretter vise den endelige prisen etter rabatten er trukket fra."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Kjøpesum med rabatt: 900.0\n"
]
}
],
"source": [
"kjopesum = int(input(\"Skriv inn kjøpesum: \"))\n",
"\n",
"if kjopesum >= 1000:\n",
" kjopesum *= 0.9 # Trekk fra 10%\n",
"elif kjopesum >= 500: # Må være mindre enn 1000 pga forrige betingelse, så trenger kun sjekke om mer enn 500\n",
" kjopesum *= 0.95 # Trekk fra 5%\n",
"\n",
"print(f\"Kjøpesum med rabatt: {kjopesum},-\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Oppgave 4: Multiplikasjonstabell\n",
"\n",
"Lag et Python-program som genererer en multiplikasjonstabell for et valgt tall. \n",
"\n",
"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. \n",
"\n",
"I tillegg skal programmet beregne og vise gjennomsnittet av tallene i tabellen."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 * 3 = 3\n",
"2 * 3 = 6\n",
"3 * 3 = 9\n",
"4 * 3 = 12\n",
"5 * 3 = 15\n",
"6 * 3 = 18\n",
"7 * 3 = 21\n",
"8 * 3 = 24\n",
"9 * 3 = 27\n",
"10 * 3 = 30\n",
"Gjennomsnittet er 16.5\n"
]
}
],
"source": [
"tall = int(input(\"Skriv inn et tall: \"))\n",
"\n",
"total = 0\n",
"\n",
"for i in range(1, 11):\n",
" verdi = tall * i\n",
" total += verdi\n",
" print(f\"{i} * {tall} = {verdi}\")\n",
"\n",
"gjsnitt = total / 10\n",
"print(f\"Gjennomsnittet er {gjsnitt}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Oppgave 5: Telle bokstaver\n",
"\n",
"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.\n",
"\n",
"**Hint:** Benytt metodene str#isalpha() og str#isspace()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Alfabetiske tegn: 13\n",
"Mellomrom: 3\n"
]
}
],
"source": [
"setning = input(\"Skriv inn en setning: \")\n",
"\n",
"alfabetisk = 0\n",
"mellomrom = 0\n",
"\n",
"for ch in setning:\n",
" if ch.isalpha():\n",
" alfabetisk += 1\n",
" elif ch.isspace():\n",
" mellomrom += 1\n",
"\n",
"print(f\"Alfabetiske tegn: {alfabetisk}\")\n",
"print(f\"Mellomrom: {mellomrom}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Oppgave 6: Hva er størst?\n",
"\n",
"Lag et program som ber brukeren om et flyttall helt til brukeren skriver “avslutt”. \n",
"\n",
"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",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Største tall: 20.0\n",
"Minste tall: 5.0\n"
]
}
],
"source": [
"import math # Python-bibliotek som inneholder mye nyttige matteverktøyer\n",
"\n",
"minst = math.inf # Sett til største mulig verdi slik at alle andre verdier er mindre\n",
"storst = -math.inf # Sett til minst mulig verdi slik at alle andre verdier er større\n",
"\n",
"while True: # Lag en evig løkke. Legg merke til bruk at \"break\" senere!\n",
" command = input(\"Skriv inn et tall/kommando: \")\n",
" if command.lower() == \"avslutt\":\n",
" break # Stopper den evige løkken dersom \"avslutt\" blir skrevet inn\n",
" \n",
" num = float(command) # Gjør om verdien fra string til float\n",
" \n",
" # Gjør disse sjekkene som 2 separate if-blokker (i stedet for å bruke elif) for å\n",
" # håndtere det første tallet, som både er størst og minst \n",
" if minst > num:\n",
" minst = num\n",
" \n",
" if storst < num:\n",
" storst = num\n",
"\n",
"print(f\"Største tall: {storst}\")\n",
"print(f\"Minste tall: {minst}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Oppgave 7\n",
"\n",
"Vi ønsker å forbedre løsningen vår fra oppgave 1 til å benytte to funksjoner for utregning. Lag funksjonene\n",
"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",
"\n",
"**n = 5:**\n",
"```\n",
"1\n",
"12\n",
"123\n",
"1234\n",
"12345\n",
"```\n",
"\n",
"**n = 3:**\n",
"```\n",
"1\n",
"12\n",
"123\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"12\n",
"123\n",
"1234\n",
"12345\n",
"1\n",
"12\n",
"123\n"
]
}
],
"source": [
"def print_pattern(n):\n",
" for i in range(1, n + 1):\n",
" for j in range(1, i + 1):\n",
" print(j, end=\"\") # Ved å skrive end=\"\" går vi ikke på ny linje\n",
" print() # Begynn på en ny linje\n",
"\n",
"\n",
"print_pattern(5)\n",
"print_pattern(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Oppgave 9: Karakter til tall\n",
"\n",
"Lag 2 funksjoner som gjør om mellom bokstavkarakter og tall:\n",
" - `convert_grade(grade)`\n",
" - `convert_score(score)`\n",
"\n",
"| Karakter | Score |\n",
"| --- | --- |\n",
"| A | 5 |\n",
"| B | 4 |\n",
"| C | 3 |\n",
"| D | 2 |\n",
"| E | 1 |\n",
"| F | 0 |"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def convert_grade(grade):\n",
" # Her kunne vi også benytte at ord(\"A\") = 65 og ord(\"E\") = 69\n",
"\n",
" # Gjør om til stor bokstav først slik at vi slepper gjøre det i hver if-setning\n",
" grade = grade.upper()\n",
" if grade == \"A\":\n",
" return 5\n",
" elif grade == \"B\":\n",
" return 4\n",
" elif grade == \"C\":\n",
" return 3\n",
" elif grade == \"D\":\n",
" return 2\n",
" elif grade == \"E\":\n",
" return 1\n",
" else:\n",
" return 0 # Her kunne vi også laget en feilmelding eller lignende\n",
"\n",
"\n",
"def convert_score(score):\n",
" score = round(score) # Rund av til nærmeste heltall\n",
" if score == 5:\n",
" return \"A\"\n",
" elif score == 4:\n",
" return \"B\"\n",
" elif score == 3:\n",
" return \"C\"\n",
" elif score == 2:\n",
" return \"D\"\n",
" elif score == 1:\n",
" return \"E\"\n",
" else:\n",
" return \"F\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Oppgave 10: Karakterkalkulator\n",
"\n",
"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",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Din gjennomsnittskarakter er B\n"
]
}
],
"source": [
"total = 0\n",
"count = 0\n",
"\n",
"while True:\n",
" grade = input(\"Skriv inn en karakter: \")\n",
"\n",
" if grade.lower() == \"avslutt\":\n",
" break\n",
"\n",
" total += convert_grade(grade)\n",
" count += 1\n",
"\n",
"avg = total / count\n",
"avg_grade = convert_score(avg)\n",
"\n",
"print(f\"Din gjennomsnittskarakter er {avg_grade}\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
%% 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: "))
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: "))
ifkjopesum>=1000:
kjopesum*=0.9# Trekk fra 10%
elifkjopesum>=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
foriinrange(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
forchinsetning:
ifch.isalpha():
alfabetisk+=1
elifch.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
importmath# 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
whileTrue:# Lag en evig løkke. Legg merke til bruk at "break" senere!
command=input("Skriv inn et tall/kommando: ")
ifcommand.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
ifminst>num:
minst=num
ifstorst<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
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
defprint_pattern(n):
foriinrange(1,n+1):
forjinrange(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
defconvert_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()
ifgrade=="A":
return5
elifgrade=="B":
return4
elifgrade=="C":
return3
elifgrade=="D":
return2
elifgrade=="E":
return1
else:
return0# Her kunne vi også laget en feilmelding eller lignende
defconvert_score(score):
score=round(score)# Rund av til nærmeste heltall
ifscore==5:
return"A"
elifscore==4:
return"B"
elifscore==3:
return"C"
elifscore==2:
return"D"
elifscore==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
whileTrue:
grade=input("Skriv inn en karakter: ")
ifgrade.lower()=="avslutt":
break
total+=convert_grade(grade)
count+=1
avg=total/count
avg_grade=convert_score(avg)
print(f"Din gjennomsnittskarakter er {avg_grade}")