SA

Programmering 1: Input och For-loopar

Grundläggande in- och utmatning (Input)

  • 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.

Avrundning av tal

  • 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.

Exempel – Personlig tränare (PT-kalkylator)

  • 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().

Vanliga fel & felsökning

  • 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.

Övningar (Input-kapitel)

  • 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.

For-loopar (Iteration)

  • 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.

range()-varianter

  • \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)

Ackumulation (beräkningar i loopar)

  • 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.

Nästlade for-loopar

  • 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).

Viktiga tips

  • 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.

Övningar (Loop-kapitel)

  • 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.

Etiska & praktiska reflektioner

  • 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.