- Kursmaterial
- Planering
- Arbete
- Kunskapsdokument
- Andra kurser
- Om Kursolle
M04 Hjälp till uppgifter
På denna sidan kommer det finnas hjälp till lösning av uppgifter samt en fullt fungerande lösning i form av kod.
Att kopiera färdiga lösningar gör inte att du blir bättre på programmering, men det kan vara ett effektivt sätt att få lite hjälp för att bli en duktig programmerare. Det är ditt ansvar att använda hjälpen på rätt sätt.
Lösningsförslagen är inte alltid kommenterade i koden, tanken är att du skall kunna ta ner koden och själv förstå vad som händer genom att testa och formulera kommentarer
för dig själv.
Iterationer
For-loopen
Uppgift m04u01
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Uppgift m04u02
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Nästlade iterationer
Uppgift m04u03
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
While-loopen
Uppgift m04u04
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Uppgift m04u05
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Uppgift m04u06
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Felhantering
Uppgift m04u07
Detta är en svårare uppgiftet som i nuläget inte har något lösningsförslag. Men lite tips från coachen är ju tillåtet.
Hjälp till lösning [klicka för att visa]
Fundera på;
- vilka delar du vill ha i ett eller flera try/except-block.
- Vill du ha alla try/except-block i en loop eller är det bättre att använda flera loopar?
- Att jämföra olika korrekta värden genererar inget fel. Då behöver du använda en annan struktur än just try/except, tex ifall startvärdet är högre än slutvärdet. Eller är det ens ett fel?
Listor
Uppgift m04u08
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Uppgift m04u09
Lösningsförslag [klicka för att visa]
Inspelat lösningsförslag [klicka för att visa]
Denna filmade lösning är inte identisk med den lösningen som finns som lösningsförslag ovan.
Uppgift m04u10
Lösningsförslag [klicka för att visa]
# Del A – Bygg en klasslista
klass = []
while True:
namn = input("Ange ett namn (STOP för att avsluta): ")
if namn == "STOP":
break
klass.append(namn)
print("\n--- Klasslista ---")
print(klass)
print(f"Antal namn: {len(klass)}")
# Del B – Sök i listan
sok = input("\nSkriv ett namn att söka efter: ")
if sok in klass:
print(f"{sok} hittades i listan.")
else:
print(f"{sok} finns inte i listan.")
val = input("Vill du lägga till namnet? (j/n): ")
if val.lower() == "j":
klass.append(sok)
print(f"{sok} lades till i listan.")
else:
print("Namnet lades inte till.")
# Del C – Sortera och skriv ut snyggt
klass.sort()
print("\n--- Sorterad och numrerad klasslista ---")
for i, namn in enumerate(klass, start=1):
print(f"{i}. {namn}")
# Del D – Listor i listor
parlista = []
# Stega 2 i taget: 0, 2, 4, ...
for i in range(0, len(klass), 2):
namn1 = klass[i]
if i + 1 < len(klass):
namn2 = klass[i + 1]
else:
namn2 = "-"
parlista.append([namn1, namn2])
print("\n--- Par av namn ---")
for par in parlista:
print(par[0], " + ", par[1])Uppgift m04u11
Lösningsförslag [klicka för att visa]
# Del A – Samla in data
tal_lista = []
while True:
tal = int(input("Mata in ett tal (0 avslutar): "))
if tal == 0:
break
tal_lista.append(tal)
# Del B – Bearbeta data
if len(tal_lista) == 0:
print("Du matade inte in några tal.")
else:
unika_tal = set(tal_lista)
resultat = (
sum(tal_lista),
min(tal_lista),
max(tal_lista)
)
# Del C – Presentera resultatet
print("Alla tal:", tal_lista)
print("Unika tal:", unika_tal)
print("Summa:", resultat[0])
print("Minsta tal:", resultat[1])
print("Största tal:", resultat[2])
Uppgift m04u12
Lösningsförslag
telefonbok = {}
# Del A + B: inmatning
while True:
namn = input("Ange namn (stop för att avsluta): ")
if namn == "stop":
break
if namn in telefonbok:
print("Namnet finns redan.")
svar = input("Vill du uppdatera numret? (ja/nej): ")
if svar == "ja":
nummer = input("Ange nytt nummer: ")
telefonbok[namn] = nummer
else:
nummer = input("Ange telefonnummer: ")
telefonbok[namn] = nummer
# Del C: utskrift och uppslagning
print("\nTelefonbok:")
print(telefonbok)
sok = input("\nVems nummer vill du slå upp? ")
if sok in telefonbok:
print(f"{sok}s nummer är {telefonbok[sok]}")
else:
print("Namnet finns inte i telefonboken.")
Uppgift m04u13
Lösningsförslag [klicka för att visa]
resultat = {}
# 1) Inmatning
while True:
namn = input("Namn (Enter för att avsluta): ")
if namn == "":
break
poang = int(input("Resultat: "))
resultat[namn] = poang
# Om inget matats in
if len(resultat) == 0:
print("\nInga resultat att analysera.")
else:
# 2) Summa + antal + medel
summa = 0
for p in resultat.values():
summa += p
antal = len(resultat)
medel = summa / antal
print("\nSumma:", summa)
print(f"Medel: {medel:.2f}")
# 3) Lista över medel + räkna hur många
print("\nÖver medel:")
over = 0
for namn, p in resultat.items():
if p > medel:
print(namn, "-", p)
over += 1
print("\nAntal över medel:", over)
Uppgift m04u14
Lösningsförslag [klicka för att visa]
# --- Del A: Klassregister ---
klassregister = {}
while True:
namn = input("Namn (Enter för att avsluta): ")
if namn == "":
break
klass = input("Klass: ")
klassregister[namn] = klass
print("\nKlassregister:")
for namn, klass in klassregister.items():
print(namn, "-", klass)
# --- Del B: Slå upp och ta bort ---
sok_namn = input("\nSök efter elev: ")
if sok_namn in klassregister:
print(f"{sok_namn} går i {klassregister[sok_namn]}")
else:
print("Eleven finns inte i registret.")
# Ta bort en elev (exempel: första nyckeln)
if len(klassregister) > 0:
ta_bort = next(iter(klassregister))
del klassregister[ta_bort]
print(f"\nTog bort {ta_bort} ur registret.")
# --- Del C: Räkna förekomster ---
antal_per_klass = {}
for klass in klassregister.values():
if klass in antal_per_klass:
antal_per_klass[klass] += 1
else:
antal_per_klass[klass] = 1
print("\nAntal elever per klass:")
for klass, antal in antal_per_klass.items():
print(f"{klass}: {antal}")Uppgift m04u15
Lösningsförslag [klicka för att visa]
# Del A
pass1 = {"aktivitet": "Löpning", "minuter": 30, "intensitet": 4}
print(f'{pass1["aktivitet"]} - {pass1["minuter"]} min - {pass1["intensitet"]}/5')
# Del B
traning = [
{"aktivitet": "Löpning", "minuter": 30, "intensitet": 4},
{"aktivitet": "Gym", "minuter": 45, "intensitet": 5},
{"aktivitet": "Promenad", "minuter": 40, "intensitet": 2}
]
print("\nAlla pass:")
for p in traning:
print(f'{p["aktivitet"]} - {p["minuter"]} min - {p["intensitet"]}/5')
# Del C
total_tid = 0
for p in traning:
total_tid += p["minuter"]
medel_tid = total_tid / len(traning)
print("\nTotal tid:", total_tid, "min")
print("Medeltid per pass:", round(medel_tid, 2), "min")
print("\nHög intensitet (4–5):")
for p in traning:
if p["intensitet"] >= 4:
print(f'- {p["aktivitet"]} ({p["minuter"]} min, {p["intensitet"]}/5)')
# Extra (frivillig)
svar = input("\nVill du lägga till ett pass? (j/n): ")
if svar == "j":
aktivitet = input("Aktivitet: ")
minuter = int(input("Minuter: "))
intensitet = int(input("Intensitet (1-5): "))
nytt_pass = {"aktivitet": aktivitet, "minuter": minuter, "intensitet": intensitet}
traning.append(nytt_pass)
print("\nUppdaterad lista:")
for p in traning:
print(f'{p["aktivitet"]} - {p["minuter"]} min - {p["intensitet"]}/5')