Fikset en feil i øving 3
Compare changes
+ 6
− 1496
Nøstede løkker vil si løkker som er inni andre løkker. Et eksempel på en nøstet løkke er en dobbel løkke, som vil si at det er en løkke inni en annen løkke. Doble løkker brukes mye i programmering, typisk når man skal løse problemer som på en eller annen måte er todimensjonale, f.eks. knyttet til matriser eller todimensjonale tabeller med tall. Todimensjonal her kan bety rent visuelt (f.eks. at man skal tegne noe på en skjerm og må oppdatere fargen i hvert punkt i et rutenett av piksler), men behøver ikke å ha noen visuell betydning. Det kan være snakk om dimensjoner av informasjon på en mer abstrakt måte. F.eks. kan de to dimensjonene være tall og verdier i kortstokken, vi kan da generere en hel kortstokk ved en dobbel løkke som følger:
```
Den innerste løkka går 13 runder hver gang den kjører fordi det er 13 elementer i sekvensen som gis til for-løkka (verdier). Den legger til hver av kortene i en farge til en indre streng. Denne strengen legges til en ytre streng når den indre forløkken er ferdig. Dermed får vi alle kortene av en sort hver gang den indre forløkken er ferdig å kjøre. Merk "\n" i den ytre strengen. Dette gjør at vi skifter linje mellom hver gang den fullførte indre strengen legges til den ytre strengen. Den ytre løkka går 4 ganger, en for hver farge i kortstokken
```
```
Denne utskriften trenger man strengt tatt ikke dobbel løkke for å få til; selve utskriften gir riktig nok et todimensjonalt inntrykk, men siden den underliggende informasjonen ikke er todimensjonal men derimot konstant (samme utskrift "Jeg elsker ITGK!" i alle tilfeller), er det også greit mulig å klare dette med enkel løkke, eller helt uten løkker, som følger:
```
Hvis vi nå endrer litt på kravene til programmet, så det skal handle om flere studenter enn "Jeg" og flere emner enn "ITGK", vil vi ha et genuint todimensjonalt problem (én dimensjon er studenter, en annen emner) hvor dobbel løkke vil være klart enkleste løsning. **Din oppgave: kopier funksjonen nested_loop_example(), endre programmet så det gir utskrift som vist nedenfor**. Fra forrige oppgave skal altså Jeg byttes ut med Stud <nummer>, og ITGK skal byttes ut med Emne <nummer>. Brukeren skal angi ønsket antall for både studenter og emner, 4 og 3 er bare eksempler.
**EKSTRA UTFORDRING** (ikke nødvendig for å få godkjent (a)): For å gjøre programmet litt mindre tørt og abstrakt, kan du prøve å endre så det skriver fornavn på personer i stedet for "Stud x", og navn på faktiske emner i stedet for Emne y - jfr eksempel med kortstokk i teksten "Intro til nøstede løkker" øverst i denne oppgaven. For å gjøre det mindre forutsigbart, kan du dessuten bruke funksjonen random() for å generere tilfeldige tall for hver runde av løkka, og ha en if-setning for å velge verb basert på verdien av dette. F.eks. "elsker" bare hvis tallet ble > 0.9, og gradvis litt mer beskjedne verb til lavere tallverdien var.
```
```
Bruk doble løkker til å lage en funksjon som returnerer alle tallene i den lille gangetabellen, dvs. lag to for-løkker opp til 11 og multipliser variabelen x fra den ene løkken med variabelen y fra den andre løkken og bygg det på en indre streng i den innerste løkken. Du trenger ikke å tenke på formatet til utskriften.
```
**Bonus**: Forsøk å legg inn "\n" etter den innerste løkken i c) har kjørt (dvs. på samme innrykk som innerste for, men nedenfor linjen hvor inner_string blir utvidet med tall. Legg også til et mellomrom etter str(i*j)' ' på slutten av print-funksjonen som printer ut tallene. Ser du nå at det ligner mer på en gangetabell?
```