Syfte: Göra program interaktiva genom att ta emot data från användaren.
Huvudkommando: input()
– returnerar alltid en sträng om ingen typomvandling görs.
Standardmönster
print("Vänligen fyll i ditt namn:")
namn = input()
print("Trevligt att träffas", namn)
# eller
namn = input("Vänligen fyll i ditt namn:")
Typomvandling
Heltal: int()
python ålder = int(input("Hur många år är du?"))
Decimaltal: float()
python längd = float(input("Hur lång är du?"))
Varför typomvandla?
Strängar multipliceras som text: python tal = input("Skriv ett heltal:") print(5 * tal) # "88888" om tal == "8"
Korrekt: python tal = int(input("Skriv ett heltal:")) print(5 * tal) # 40
Sträng-konkatenering vs. kommatecken
print("Hej", namn)
lägger automatiskt in ett mellanslag.
print("Hej " + namn + "!")
ger full kontroll över mellanslag & interpunktion.
Funktion: round(x, n)
där x är talet och n antal decimaler.
print(round(663.671245, 2)) # 663.67
print(round(663.991245)) # 664
Praktisk betydelse: Presentera pengar eller fysikaliska mått på ett begripligt sätt.
Affärslogik
Pris per timme: 499 kr
Indata python namn = input("Vad heter du?") antal_timmar = int(input("Hur många timmar vill du träna?"))
Utskrift: python print("Det kostar", pris * antal_timmar, "kr.")
Decimalvariant: tillåter t.ex. 5.5 timmar med float()
.
Ingen variabel att lagra indata i – inget att använda senare.
Glömd typomvandling (int
, float
) → texttolkning.
Fel decimaltecken: Python kräver punkt (.), inte komma.
Traceback-meddelanden: läs översta raden för att hitta var felet uppstod.
Uppgift 1
a) Hälsa på användaren.
b) Be om ålder och skriv: ”Om fem år är du __ år gammal.”
c) Be om längd i meter, konvertera till centimeter: \text{cm} = längd \times 100.
Uppgift 2: Avrunda 188.987123 till
a) 2 decimaler
b) 1 decimal
Uppgift 3: Beräkna maxpuls med formeln \text{maxpuls} = 220 - \text{ålder}.
Uppgift 4: Be om 4 decimaltal, multiplicera dem och visa resultatet.
Motivation: Slippa skriva upprepande kod; datorn utför repetitiva uppgifter exakt & snabbt.
Grundsyntax
for i in range(5):
print("Hej")
range(5)
genererar sekvensen 0,1,2,3,4 (längd 5).
Kolon (:
) avslutar for-raden.
Indrag (tabb eller 2 mellanslag) markerar kodblocket att upprepa.
\text{range}(\text{stopp}) → 0..\text{stopp}-1
\text{range}(\text{start}, \text{stopp}) → \text{start}..\text{stopp}-1
for i in range(1, 6): # 1–5
print(i)
\text{range}(\text{start}, \text{stopp}, \text{steg})
for i in range(0, 21, 5): # 0,5,10,15,20
print(i)
Exempel: Summa 1 till 100
summa = 0
for i in range(1, 101):
summa += i # samma som summa = summa + i
print("Summan av alla tal mellan 1 och 100:", summa)
Möjliga operatorer: +=
, -=
, *=
, /=
– generaliserar till produkter, medelvärden, etc.
Struktur
for i in range(3):
for j in range(2):
print("Hej")
print("\n")
Resultat: 6 utskrifter ( 3 \times 2 ).
end=""
i print()
Hindrar automatiskt radbrytning: python print("Hej", end="")
Praktiskt: skapa tabeller, rutsystem, simuleringar (t.ex. spelplaner).
Indentering är syntaxkrav i Python; fel indrag ger IndentationError
.
Kontrollera att varje for
avslutas med kolon.
Variabelnamn i
, j
, k
är konvention för räknare men kan bytas mot beskrivande namn för läsbarhet.
Bygg vidare på tidigare uppgifter – t.ex. be om flera värden i en loop och beräkna medel.
Kombinera med input: låt användaren ange hur många gånger loopen ska köras.
Fördjupning: skriv en nästlad loop som skriver multiplikationstabellen 1–10.
Dataintegritet: Undvik att lagra känslig indata (namn, ålder) längre än nödvändigt.
Användarupplevelse: Klara och vänliga prompt-texter → högre användaracceptans.
Kodunderhåll: Loopar och funktioner minskar duplicerad kod – lättare buggrättning och uppdatering.
Expansion: Samma grunder (input, typomvandling, loopar) används i allt från enkla skript till AI-modeller.