Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

04.01 for-løkker og while-løkker

I denne oppgaven skal du skrive fire forskjellige løkker. Husk å kjøre programmet for å sjekke at løkkene fungerer som de skal.

a) Skriv en for-løkke som skriver ut alle tallene fra 0 til (og med) 10.

b) Skriv en while-løkke som skriver ut alle tallene fra 0 til (og med) 10.

c) Skriv en for-løkke som skriver ut alle elemetene i listen liste under.

liste = ["Sauer", "er", "myke", "dyr."]

d) Skriv en while-løkke som skriver ut alle elemetene i liste

Hint

Bruk en variabel for indeksene.


a)

for i in range(0, 11):
    print(i)

NB: merk at range() kjører til men ikke med stoppverdien.

b)

teller = 0
while teller != 11:
    print(teller)
    teller += 1

Eller:

teller = 0
while teller <= 10:
    print(teller)
    teller += 1

c)

liste = ["Sauer", "er", "myke", "dyr."]
for ord in liste:
    print(ord)

Eller med range() og indekser:

liste = ["Sauer", "er", "myke", "dyr."]
for i in range(len(liste)):
    print(liste[i])

d)

liste = ["Sauer", "er", "myke", "dyr."]

indeks = 0

while indeks < len(liste):
    print(liste[indeks])
    indeks += 1

04.04 For-løkke i ulike beholdere

I denne oppgaven skal du bruke en for-løkke for å iterere gjennom en liste, en mengde, og en ordbok.

a) Bruk en for-løkke for å iterere gjennom følgende liste, og skriv ut alle elementene:

aviser = ["Aftenposten", "VG", "Morgenbladet", "Dagbladet", "Klassekampen"]

b) Bruk en for-løkke for å iterere gjennom følgende mengde, og skriv ut alle elementene:

partall = {10, 8, 6, 4, 2, 0}

c) Bruk en for-løkke for å skrive ut alle navnene (nøkkelverdiene) i følgende ordbok:

kallenavn = {"Roger" : "Roggis", "Magnus" : "Kluten", "Stine" : "Lappen", "Ingeborg" : "Skruen"}

d) Bruk en for-løkke for å skrive ut alle kallenavnene (innholdsverdiene) i ordboken fra c).

a) med en for-each-løkke:

aviser = ["Aftenposten", "VG", "Morgenbladet", "Dagbladet", "Klassekampen"]

for avis in aviser:
    print(avis)

Eller med en for-in-range-løkke:

aviser = ["Aftenposten", "VG", "Morgenbladet", "Dagbladet", "Klassekampen"]

for i in range(len(aviser)):
    print(aviser[i])

b)

partall = {10, 8, 6, 4, 2, 0}

for tall in partall:
    print(tall)

NB: her kan du ikke bruke en for-in-range-løkke fordi mengder ikke har faste indekser for hvert element.

c)

kallenavn = {"Roger" : "Roggis", "Magnus" : "Kluten", "Stine" : "Lappen", "Ingeborg" : "Skruen"}

for navn in kallenavn:
    print(navn)

d)

kallenavn = {"Roger" : "Roggis", "Magnus" : "Kluten", "Stine" : "Lappen", "Ingeborg" : "Skruen"}

for navn in kallenavn:
    print(kallenavn[navn])
Tips

Om du er interessert, les gjerne mer om ordbokmetoder for å hente ut informasjon fra ordbøker på W3Schools her:

04.05: Enkel trekant

Filnavn: stjernetrekant.py

a) Opprett en variabel stjerner som har en tom streng som verdi og et heltallvariabel teller med verdi 0.

b) Skriv en while-løkke som kjører så lenge teller er mindre enn 9. Hver gang løkken kjører skal du legge til "*" på slutten av stjerner og skrive den ut. Husk å øke teller med én for hver gang løkken kjøres.

Eksempel på utskrift:

*
**
***
****
*****
******
*******
********
*********

stjernetrekant.py:

stjerner = ""
teller = 0
while teller < 9:
    stjerner = stjerner + "*"
    print(stjerner)
    teller += 1

04.06: Kopier lister

Filnavn: kopier_liste.py

a) Lag en liste som inneholder strengene "IN1010", "IN1000" og "IN1050".

b) Lag en ny tom liste.

c) Kopier alle strengene fra den første listen til den nye listen ved hjelp av en løkke. Skriv til slutt ut den nye listen.

a)

liste_a = ["IN1010", "IN1000", "IN1050"]

b)

liste_b = []

c)

for element in liste_a:
    liste_b.append(element)

print(liste_b)
Tips

Du kan også kopiere en liste med list.copy() som returnerer en kopi av listen.

liste_b = liste_a.copy()

04.07: Nøstet liste

Filnavn: enkel_rutenett.py

a) Oprett en tom liste o_liste. Skriv så en for-løkke for å legge til strengen "o" i denne listen 5 ganger.

b) Lag en tom liste stjerneliste og legg til strengen "*" 5 ganger på samme måte som i a).

c) Lag en liste rutenett som inneholder o_liste og stjerneliste.

d) Legg deretter inn o_liste en gang til.

e) Skriv ut rutenett[0], rutenett[1] og rutenett[2] på hver sin linje. Kjør programmet ditt.

f) Endre programmet slik at innholdet av rutenett skrives ut ved hjelp av en enkel for-løkke. Kjør programmet på nytt.

a)

o_liste = []
for e in range (5):
    o_liste.append("o")

b)

stjerneliste = []
for e in range (5):
    stjerneliste.append("*")

c)

rutenett = [o_liste, stjerneliste]

eller

rutenett = []
rutenett.append(o_liste)
rutenett.append(stjerneliste)

d)

rutenett.append(o_liste)

e)

print(rutenett[0])
print(rutenett[1])
print(rutenett[2])

f)

for e in rutenett:
    print(e)

04.08: While-løkker med input

Denne oppgaven har tre deloppgaver som er uavhengige av hverandre. I hver av deloppgavene skal du bruke både input() og en while-løkke.

a) Lag et program som tar et tall som input fra bruker. Bruk en while-løkke til å skrive ut alle tall fra 0 til og med dette tallet.

b) Lag et annet program som ved hjelp av en while-løkke tar inn input fra brukeren helt til brukeren skriver "slutt". (Da skal programmet avsluttes). Etter hver gang brukeren skriver inn noe, skal programmet skrive ut "hei" til terminalen.

c) Lag et tredje program som ber om et tall fra brukeren inne i en while-løkke, og la løkken kjøre så lenge brukeren taster inn et tall mindre enn 10.

a)

inp = input("Tast et heltall: ")
tall = int(inp)
teller = 0

while teller <= tall:
    print(teller)
    teller += 1

b)

svar = ""
while svar != "slutt":
    svar = input("Fortell meg noe: ")
    print("Hei!")

c)

tall = 0
while tall <= 10:
    inp = input("Skriv inn et heltall: ")
    # Husk å kaste om inp til et heltall
    tall = int(inp)

04.09 flat matrise

Filnavn: flat_matrise.py

I denne øvelsen tar vi en matrise (nøstet liste) og gjør den om til en flat liste.

eksempel_matrise = [[0, 1, 2], 
                    [3, 2, 1], 
                    [1, 1, 0]]

a) Bruk en løkke til å gå gjennom eksempel_matrise og skriv ut hver liste.

b) Bruk en ny løkke inni den første løkken for å gå gjennom hvert av elementene i hver liste og skriv ut elementene.

c) I stedet for å skrive ut elementene, legg til elementene i en ny tom liste. Skriv ut denne listen til slutt.

Forventet utskrift:

[0, 1, 2, 3, 2, 1, 1, 1, 0]

Utfordring: kan du nå endre koden fra c) for å flate ut en nøstet 3D-matrise?

eksempel_3d_matrise = [
    [[0, 1, 2], [3, 2, 1]], 
    [[1, 1, 0], [4, 2, 3], [2, 1, 0]]
    ]

a)

for liste in eksempel_matrise:
    print(liste)

b)

for liste in eksempel_matrise:
    for element in liste:
        print(element)

c)

flat_liste = []
for liste in eksempel_matrise:
    for element in liste:
        flat_liste.append(element)

print(flat_liste)

Utfordring

eksempel_3d_matrise = [
    [[0, 1, 2], [3, 2, 1]],
    [[1, 1, 0], [4, 2, 3], [2, 1, 0]]
    ]

flat_liste = []
for ytre_liste in eksempel_3d_matrise:
    for indre_liste in ytre_liste:
        for element in indre_liste:
            flat_liste.append(element)

print(flat_liste)