M02 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.
Vissa lösningar finns som kod som går att kopiera medan andra lösningar endast finns som bilder som är möjliga att skriva av.

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.

Flera av lösningarna har jag filmat och förklarar hur jag tänker när jag löser uppgiften. Ibland har jag kompletterat med andra bra filmer som förklarar olika delar på ett bra sätt. Det är inte alltid jag som har gjort filmen och då passar den bättre här än på momentets huvudsida.

Övning 1

Lösningsförslag [klicka för att visa]

print("Johan Hällgren")
print("Ett\ntvå\ntre")
print()      # Det går också att skriva print("")
print("Peter \"Foppa\" Forsberg var en duktig hockeyspelare.")

Övning 2

Lösningsförslag [klicka för att visa]

# Johan Hällgren
print("Johan Hällgren")   # Skriver ut mitt namn
print("Ett\ntvå\ntre")    # \n skapar ny rad
print()                   # Det går också att skriva print("")
# \" behövs för att skriva ut \"
print("Peter \"Foppa\" Forsberg var en duktig hockeyspelare.")
# Det går också att skriva print('Peter "Foppa" Forsberg')
# Kolla vilken snygg kolumn kommentarerna skapade på rad 2-4

Uppgift m02u01

Lösningsförslag [klicka för att visa]

Kodförslag

Inspelat lösningsförslag [klicka för att visa]

Övning 3

Lösningsförslag [klicka för att visa]

# Bra, beskrivande variabelnamn (snake_case)
namn = "Anna Andersson"
fodelsear = 2009
alder = 16

# Utskrift
print(namn)
print(fodelsear)
print(alder)

# Exempel på dåligt/otydligt namn
x = 16
print(x)  # Svårt att förstå vad 'x' betyder jämfört med 'alder'

Övning 4

Lösningsförslag [klicka för att visa]

namn = "Anna"
alder = 16
favoritfarg = "grön"

# Utskrift
print(namn, alder, favoritfarg)

# Kolla datatyper
print(type(namn))        # <class 'str'>
print(type(alder))       # <class 'int'>
print(type(favoritfarg)) # <class 'str'>

Övning 5

Lösningsförslag [klicka för att visa]

# 1) Två heltal och grundräkning
a = 12
b = 5

print(a + b)               # 17
print(a - b)               # 7
print(a * b)               # 60
print(a / b)               # 2.4  (flyttal)
print(a // b)              # 2
print(a % b)               # 2

# 2) Förstå // och %
sekunder = 3661
minuter = sekunder // 60
print(minuter)              # 61
resterande_sek = sekunder % 60
print(resterande_sekunder)  # 1

# 3) Cirkelarea (pi * r**2)
pi = 3.14
r = 5
area = pi * (r ** 2)        # 3.14 * 25 = 78.5
print(area)                 # 78.5

Uppgift m02u02

Lösningsförslag [klicka för att visa]

Kodförslag

Inspelat lösningsförslag [klicka för att visa]

Notera att på uppgift 13 så måste uppräkningen ske innan utskriften görs, att göra en uppräkning inne i printfunktionen (print(a+=b)) kommer ge dig ett error.

Övning 6

Lösningsförslag [klicka för att visa]

namn = "Anna"
alder = 16
langd = 1.7235  # meter

# 1) Skriv ut en mening med f-string
print(f"{namn} är {alder} år gammal och {langd:.2f} meter lång.")

# 2) Exempel: samma tal utan avrundning vs med två decimaler
print("Utan formatering:", langd)
print(f"Med två decimaler: {langd:.2f}")

Uppgift m02u03

OBS: Denna uppgiften är den gamla m02u03 där eleverna skulle skapa alla varianter av utskrifter för att kunna jämföra dessa. Den justerade uppgiften handlar om att först fokusera på f-string och sedan eventuellt göra de andra varianterna. Den totala lösningen är dock den samma.

Lösningsförslag [klicka för att visa]

Kodförslag

Inspelat lösningsförslag [klicka för att visa]

Övning 7

Lösningsförslag [klicka för att visa]

namn = input("Vad heter du? ")
ålder = int(input("Hur gammal är du? "))

print(f"{namn} är {ålder} år gammal.")
print(f"Om tio år är {namn} {ålder + 10} år gammal.")

Uppgift m02u04

Lösningsförslag [klicka för att visa]

Kodförslag

Inspelat lösningsförslag [klicka för att visa]

Lösningsförslag utbyggnad 1 [klicka för att visa]

Kodförslag

Lösningsförslag utbyggnad 2 [klicka för att visa]

Kodförslag

Utskrift

Kodförslag

Övning 8

Lösningsförslag [klicka för att visa]

text = input("Skriv en kort mening: ")

# Skriver ut texten med små bokstäver
print("Gemener:", text.lower())

# Skriver ut texten med stora bokstäver
print("Versaler:", text.upper())

# Gör första bokstaven stor och resten små
print("Stor första bokstav:", text.capitalize())

# Skriver ut antalet tecken i texten
print("Antal tecken:", len(text))

# Tar bort eventuella mellanslag i början och slutet
print("Text utan mellanslag i början/slutet:", text.strip())

Övning 9

Lösningsförslag [klicka för att visa]

text = "Jag älskar programmering i Python"

# Hitta var ett ord börjar i texten
position = text.find("Python")
print("Position för ordet 'Python':", position)

# Testa att söka efter ett ord som inte finns
position = text.find("Java")
print("Position för ordet 'Java':", position)  # -1 betyder att ordet inte hittades

# Ersätt ett ord med ett annat
ny_text = text.replace("älskar", "gillar")
print("Text efter ersättning:", ny_text)

# Eget exempel – byt språk
egen_mening = "Python är ett kraftfullt programmeringsspråk"
print("Egen mening:", egen_mening)
print("Ersatt språk:", egen_mening.replace("Python", "Java"))

# Extra: använd f-string för snyggare utskrift
print(f"'{text}' innehåller {len(text)} tecken.")

Uppgift m02u05

Lösningsförslag [klicka för att visa]

# 1. Ta emot en mening från användaren
mening = input("Ange en mening: ")

# 2. Ta bort eventuella inledande och avslutande blanksteg
mening = mening.strip()

# 3. Räkna antalet tecken i meningen (efter att mellanslag tagits bort i början/slutet)
antal_tecken = len(mening)

# 4. Gör första bokstaven i varje ord stor
titel_mening = mening.title()

# 5. Skriv ut resultatet
print(f"\nAntal tecken i meningen: {antal_tecken}")
print("Meningen med stor bokstav i varje ord:")
print(titel_mening)

Lösningsförslag fördjupning [klicka för att visa]

# 1. Ta emot en mening från användaren
mening = input("Ange en mening: ").strip()

# 2. Fråga användaren vilket ord som ska ersättas
ord_att_byta = input("Ange ordet du vill ersätta: ").strip()

# 3. Fråga vilket ord som ska användas istället
nytt_ord = input("Ange det nya ordet: ").strip()

# 4. Ersätt ordet i meningen
ny_mening = mening.replace(ord_att_byta, nytt_ord)

# 5. Skriv ut resultatet
print("\nDen nya meningen är:")
print(ny_mening)

Uppgift m02u06

Lösningsförslag [klicka för att visa]

# Användaren matar in e-postadress
epost = input("Ange e-post: ").strip()

# Lagra index för @-tecknet
at_index = epost.index("@")

# Utskrifter
print(f"E-postadress: {epost}")
print(f"Antal @: {epost.count("@")}")
print(f"@-tecknet finns på position: {at_index}")
print(f"Det finns en punkt efter @ på position: {epost.index(".", at_index)}")

Uppgift m02u07

Lösningsförslag [klicka för att visa]

Kodförslag

Inspelat lösningsförslag [klicka för att visa]