SA

Programmering 1 – Loopar, Bool och Villkor

Repetition av loopar (for-loop)

  • Grundsintax:

  for variabel in range(start, stop [, steg]):
      # kodblock
  • Parametrar i range(...):

    • \text{start} (inkluderande)

    • \text{stop} (exkluderande)

    • \text{steg} (valfritt, default 1)

  • Vanligaste fel: glömma kolon : efter for ...-raden eller skriva fel antal argument.

Exempel 1 – summa 1\rightarrow n
  • Uppgift:
    "Låt användaren skriva in ett tal n och summera alla tal från 1 till n."

  • Lösningsidé:

  n = int(input("Ange ett tal: "))
  summa = 0
  for i in range(1, n+1):
      summa += i
  print("Summan av talen från 1 till", n, "är:", summa)
  • Viktiga punkter:

    • Input hämtas som sträng, konverteras till int.

    • n+1 i range eftersom stop-gränsen ej inkluderas.

Exempel 2 – justera intervall
  • Ursprungligt kodstycke:

  for x in range(1, 6):
      print("Jag fyller", x, "år!")
  • Önskat resultat: 25\le x\le29
    Ändra till range(25, 30).

Exempel 3 – steglängd
  • Kod:

  for n in range(1, 17, 3):
      print(n)
  • Utskrift: 1,4,7,10,13,16 (steglängd 3)

Exempel 4 – inre + yttre loop
  • Multiplikationstabeller 1–10:

  for i in range(1, 11):
      for j in range(1, 11):
          print(i*j)
  • Två slingor inbäddade (nested): yttre i, inre j → totalt 100 utskrifter.

Exempel 5 – formaterad tabellutskrift
  • För tydligare utseende:

  for i in range(1, 11):
      print("Table=", i, ":")
      for j in range(1, 11):
          print(i, "*", j, "=", i*j)
  • Visar rad för rad:
    \text{Table}=1 : 11=1,\;12=2,\dots

Vanliga fel i loop-exempel
  • Saknad kolon efter for-raden → SyntaxError: expected ':'.

  • Fel operator t.ex. 2n istället för 2*n.

  • Använda punkt istället för komma i range, ex. range(1.61) ger fel eftersom range kräver heltal.


Datatypen Bool

  • Boolean representerar endast två värden:

    • True (sant)

    • False (falskt)

  • Exempel:

  a = True
  b = False
  • Konvertering till heltal:

  int(True)  # 1
  int(False) # 0

Jämförelse-operatorer (Compare Operators)

Matematisk symbol

Python-operator

<

<

\le

<=

=

==

\ge

>=

>

>

\neq

!=

Exempeluttryck → booleskt resultat
print(5 > 3)         # True
print(10 == 2)       # False
print("hej" != "HEJ") # True

If-satser: struktur och varianter

  • Grundläggande flödesschema:
    if (villkor) → True: kör kodblock; False: hoppa över.

  • Syntax:

  if villkor:
      # kod
  elif annat_villkor:
      # kod
  else:
      # kod
Enkla exempel
  1. Endast if:

   num = 3
   if num > 0:
       print(num, "är ett positivt tal")
  1. if + else:

   num = -1
   if num > 0:
       print("positivt")
   else:
       print("negativt")
  1. if + elif + else (flera villkor):

   if num > 0:
       ...
   elif num < 0:
       ...
   else:
       print("num är 0")

Praktiskt exempel – Medicindosering

  • Dos beror på ålder eller vikt.

1) Barn eller vuxen (enbart if/else)
svar = input("Är patienten ett barn? Y/N")
if svar == "Y":
    print("Patienten ska ha 500 mg per dag.")
else:
    print("Patienten ska ha 750 mg per dag.")
  • Viktig detalj: två likhetstecken == i jämförelsen.

2) Exakt vikt (använder elif-kedja)
vikt = int(input("Hur mycket väger patienten? Svara i kg."))
if vikt < 20:
    print("500 mg per dag")
elif 20 <= vikt <= 40:
    print("750 mg per dag")
elif 41 <= vikt <= 60:
    print("1000 mg per dag")
else:
    print("1500 mg per dag")
  • Flera intervall hanteras med separata elif.


Vanliga fel & felsökning (if/elif/else)

  • Glömt kolon efter if, elif, else.

  • Fel indrag (indentation) – Python kräver konsekventa mellanslag/tabbar.

  • Ett = istället för == i villkor.

  • Saknade citattecken runt textsträngar.

  • Fel ordning på ifelifelse.

  • Använda matematiskt skrivsätt utan operatorer, ex. 2n.

Felrättningsexempel

Följande kod gav två SyntaxError:

for n in range(0, 51)
    print(2n)

Rättningar:

  1. Lägg till kolon efter range(...):

  2. Byt 2n till 2*n.


Självkontroll-/övningsuppgifter (ur presentationen)

  • Skriv ut ordet "Jensen!" 4 gånger:

  for n in range(1,5):
      print("Jensen!")
  • Korrigera kod som ska skriva jämna tal 2–60.

  • Skriv de tio första talen i 7-ans tabell och vidare med full utskrift 7 × n = produkt.

  • Program för betygsättning utifrån poäng:

  poäng = int(input("Ange dina poäng (0-100): "))
  if poäng < 50:
      print("Ej godkänt")
  elif 50 <= poäng <= 59:
      print("Ditt betyg är: E")
  elif 60 <= poäng <= 69:
      print("Ditt betyg är: D")
  elif 70 <= poäng <= 79:
      print("Ditt betyg är: C")
  elif 80 <= poäng <= 89:
      print("Ditt betyg är: B")
  else:
      print("Ditt betyg är: A")
  • Feljakt i kod med variabel number (rätt svar enligt materialet var alternativ E):
    if (number > 1000): number –= 1 else: number = 1000

  • Debugga inmatning av ett flyttal och jämförelse med 156 (glöm inte float() och ==).


Sammanfattande tips

  • Använd for ... in range(...) för deterministiska upprepningar.
    Uteslutande parameter stop ingår inte.

  • Bool är grunden för villkorssatser; allt som jämförs returnerar True eller False.

  • I if-satser krävs:

    • Kolon efter villkorsraden.

    • Indrag på blocknivå.

    • Dubbel-likhet == för jämförelse.

  • Vid flera villkor: kedja elif innan else.

  • Vid multiplikation i kod: skriv alltid * (t.ex. 2*n).

  • Använd inre/yttre loopar för tabeller; var tydlig med variabelnamn (i, j).

  • Testa program rad för rad och använd utskrifter för felsökning.