Fördjupa förståelsen av for-loopar.
Kunna specificera start, stopp och steg i range()
.
Lära sig nästlade for-loopar (loopar inuti loopar).
Tillämpa kunskaperna i ett antal övningar & diskussionsuppgifter.
Allmän struktur:
python for variabel in range(...): # kodblock
Kolon (:) avslutar for-raden – obligatoriskt.
Indentering med tabbtangent eller två mellanslag:
Kod som är indenterad upprepas i slingan.
Fel indrag ger IndentationError
eller logiska fel.
Svensk terminologi
Loop, slinga = repetition.
Indentering = "indrag".
```python
for n in range(5):
print("Hej")
- Utskrift:
- Hej (5 gånger).
- Viktiga observationer:
- `range(5)` genererar heltalen 0,1,2,3,4 – **startar på 0 som default**.
# Variabelvärden under iteration
- ```python
for i in range(5):
print(i)
Resultat: 0\ 1\ 2\ 3\ 4 (radbrytningar mellan talen).
Visar att loopvariabeln själv går igenom värdena i range()
.
Allmän form: range(start, stop)
där stop exkluderas.
Exempel:
python for i in range(1, 6): print(i)
Skriver ut 1\ 2\ 3\ 4\ 5 (ej 6) ⇒ viktigt att komma ihåg exklusionen.
Ackumulera summa:
python summa = 0 for i in range(1, 101): summa = summa + i # kan förkortas till summa += i print("Summan av alla tal mellan 1 och 100:", summa)
Teoretiskt facit: \sum_{i=1}^{100} i = 5050.
Gäller för andra operatorer också: -=
, *=
, /=
osv.
Full syntax: range(start, stop, step)
.
Exempel (utdata 0–20 med steg 5):
python for i in range(0, 21, 5): print(i)
Output: 0\ 5\ 10\ 15\ 20.
Kan även använda negativa steg för att räkna baklänges.
python for i in range(10, 0, -1): print(i)
Struktur:
python for i in range(outer_stop): for j in range(inner_stop): # kod
Två demon:
Utan end
-argument → varje print()
lägger radbrytning:
Två for
ger 6 hej (3×2).
Med end=""
för att styra radslut:
python print("Hej ", end="")
Ger utskrift på samma rad tills \n
skrivs.
Viktigt: inner-loopen körs helt för varje varv i outer-loopen.
Syfte: befästa teori genom praktik.
Övningstitlar refereras som Uppgift 1–4.
a) Skriv tal 1\dots 11.
b) 1\dots 100.
c) -100\dots 5.
Tips: justera range(start, stop+1)
.
Förväntad lista: 0,7,14,21,\dots,98.
Kodförslag: range(0, 101, 7)
.
Använd ackumulator produkt *= i
.
Matematisk lösning: P = \prod_{i=1}^{10} i = 3628800.
Målbild (fyra rader, fem stjärnor):
*
*
*
*
Nyttjar två nästlade loopar eller print("*"*bredd)
.
print("h", end="")
-tipset påminner om hur man spärrar radbrytning.
Strävar efter ökat självständigt tänkande.
Jämnt tal ⇒ i % 2 == 0
eller range(0, 101, 2)
.
Använd input()
för att läsa n
(glöm ej int()
-omvandling).
Resultatutskrift: "Summan av talen från 1 till n är: S".
Två inputs: höjd, bredd.
Ytterloop = höjd, inner = bredd.
Negativt steg: range(10, 0, -1)
.
Ökande längd rad för rad:
*
**
***
****
*
Innerloopens längd = radnummer.
Enkel loop: for i in range(1, 11): print(i*7)
.
Format: 7 * i = produkt
.
Kräver f-string eller format()
för snygg utskrift.
Läs talet t
och loopa i
1–10.
Ger generell multiplikationsfunktion.
Dubbel nästlad loop (10×10 = 100 utskrifter).
Viktig indenterings-disciplin.
Återkoppling till input()
(data från användaren).
Repetition av aritmetiska operatorer (+=
etc.).
Förberedelse för kommande kapitel: while-loopar, listor, funktioner.
Datainsamling: Loopa över mätpunkter.
Spelutveckling: Spawna fiender i nästlade koordinater.
Statistik: Summera eller multiplicera stora datamängder.
UI-ritning: Skriva ASCII-grafik (rektanglar, trianglar).
Undvik oändliga loopar (kan hänga systemet).
Viktigt med läsbar kod: indentering → samarbete & felsökning.
Övningar tränar algoritmiskt tänkande och exakthet – kärnkompetens för etik (korrekt resultat → rättvisa beslut).
range(stop)
→ start = 0, stop exkluderas.
range(start, stop)
→ stop exkluderas.
range(start, stop, step)
→ både start & step kan vara negativa.
for
avslutas med :
och följs av indenterat block.
Använd +=
, *=
med ackumulatorer för summor/produkter.
Nästlade loopar = loop-i-loop, ordinjerings-regeln: inner är helt färdig före nästa varv i outer.
print(..., end="")
styr radbrytningar – viktigt för formaterad utskrift.