Tie koodariksi

MAA11 Algoritmer och talteori

Språk:

Introduktion i Python, del 2

For-loop

For-loopen går igenom talen i en viss intervall med hjälp av en variabel. Exempelvis skriver följande kod ut talen 1–5:
for i in range(1,6):
    print(i)
Här inkluderar variabeln i talet som behandlas. Koden i loopen skriver ut värdet för variabeln i med print-kommandot. Koden i loopen ska dras in, vilket vid behov kan göras med tab-tangenten.

Programmet producerar följande utskrift:

1
2
3
4
5
Observera att i loopen anges det första talet i den önskade intervallen och talet efter det sista talet (dvs. intervallen anges halvöppen).

Uppgift 1 Olöst

Gör ett program, som skriver ut talen 3–9 med hjälp av loopen:

Skriv ditt program här:


Mer om for-loopen

For-loopens variabel kan användas i beräkningarna. Till exempel följande loop skriver ut jämna tal:
for i in range(1,6):
    print(2*i)
Programmet producerar följande utskrift:
2
4
6
8
10
Följande loop däremot matar ut tal i fallande ordning:
for i in range(1,6):
    print(10-i)
Programmet producerar följande utskrift:
9
8
7
6
5

Uppgift 2 Olöst

Gör ett program, som skriver ut jämna tal mellan 4–14 med hjälp av loopen.

Skriv ditt program här:


Uppgift 3 Olöst

Gör ett program, som skriver ut talen 8–4 i fallande ordning med hjälp av loopen.

Skriv ditt program här:


Beräkning av summan

Följande program beräknar summan av 1+2+3+...+100:
s = 0
for i in range(1,101):
    s += i
print(s)
Programmet skapar i början variabeln s, vars värde är 0. Därefter lägger programmet till värdet för variabeln i i värdet för variabeln s i loopen. Efter loopen skriver programmet ut värdet för variabeln s.

Programmet producerar följande resultat:

5050
Observera att s += i betyder samma som s = s+i.

Uppgift 4 Olöst

Gör ett program, som beräknar summan av 1+2+3+...+1000.

Skriv ditt program här:


Uppgift 5 Olöst

Gör ett program som beräknar summan av jämna tal 2+4+6+...+1000.

Skriv ditt program här:


Uppgift 6 Olöst

Gör ett program som beräknar summan av 12+22+...+1002.

Skriv ditt program här:


Villkorssats

Villkorssatsen genomför koden i en viss situation. Till exempel följande kod skriver ut raden ”jämnt”, om värdet för variabeln x är jämnt:
if x%2 == 0:
    print("jämnt")
Följande kod däremot matar ut ”jämnt” eller ”udda” enligt värdet för variabeln x:
if x%2 == 0:
    print("jämnt")
else:
    print("ojämnt")
I villkoren kan man använda följande jämförelser:
jämförelseförklaring
==lika stor
!=olika stora
<mindre
<=mindre eller lika stor
>större
>=större eller lika stor
Därtill kan villkoren kombineras med orden and (båda villkoren gäller) och or (åtminstone ett villkor gäller).

Villkor och loopar

Med hjälp av villkoret kan man gallra bland talen som behandlas i loopen. Till exempel följande program skriver ut talen mellan 1–20, som är delbara med 3:
for i in range(1,21):
    if i%3 == 0:
        print(i)
Programmet producerar följande resultat:
3
6
9
12
15
18
Följande program däremot skriver ut talen mellan 1–20, som är delbara med 3 eller 5:
for i in range(1,21):
    if i%3 == 0 or i%5 == 0:
        print(i)
Programmet producerar följande resultat:
3
5
6
9
10
12
15
18
20

Uppgift 7 Olöst

Gör ett program som med hjälp av loopen skriver ut talen mellan 1–50, som är delbara med 7.

Skriv ditt program här:


Uppgift 8 Olöst

Gör ett program som med hjälp av loopen skriver ut talen mellan 1–50, som är delbara med 4 och 6.

Skriv ditt program här:


Inuti loopen

Inuti loopen kan det finnas vilken kod som helst, även flera kommandon. Exempelvis skriver följande kod varje tal två gånger:
for i in range(1,6):
    print(i)
    print(i)
Programmets utskrift är följande:
1
1
2
2
3
3
4
4
5
5
Följande kod däremot skriver ut talen 1–5 och 6–10 ”i omlott”:
for i in range(1,6):
    print(i)
    print(i+5)
Programmets utskrift är följande:
1
6
2
7
3
8
4
9
5
10

Uppgift 9 Olöst

Gör ett program som skriver ut talen 1–100 i följande ordning:
1
100
2
99
3
98
...
50
51

Skriv ditt program här:


Uppgift 10 Olöst

Gör ett program som skriver ut talen 1–100 i följande ordning:
2
1
4
3
6
5
...
100
99

Skriv ditt program här:


Mer om loopar

Härnäst gör vi en loop som turvis skriver ut talen 1 och 2. En möjlighet är att kontrollera om loopens variabel är jämn eller udda och skriver därefter ut 1 eller 2:
for i in range(1,11):
    if i%2 == 1:
        print(1)
    else:
        print(2)
Programmets utskrift är följande:
1
2
1
2
1
2
1
2
1
2
Ett annat sätt är att använda en hjälpvariabel som har följande tal som skrivs ut. I följande kod har hjälpvariabeln namnet a och dess innehåll börjar med 1. Efter varje utmatning beräknas variabelns nya värde med formeln 3-a.
a = 1
for i in range(1,11):
    print(a)
    a = 3-a
Programmets utskrift är följande:
1
2
1
2
1
2
1
2
1
2
Härnäst kommer två svårare uppgifter, som hjälper dig att öva mer på hur du använder loopar.

Uppgift 11 Olöst

Gör ett program som skriver ut de 30 första talen i Fibonaccis talföljd på följande sätt:
1
1
2
3
5
8
13
21
34
55
...

Skriv ditt program här:


Uppgift 12 Olöst

Gör ett program som skriver ut följande talföljd ända till talet 10:
1
2
2
3
3
3
4
4
4
4
...

Skriv ditt program här: