Programmeringskurs (alle) *: 3.3 Løkker og logiske tester

Teori Løkker og logiske tester

Det vi har sett til nå, er at vi kan traversere lister og på den måten gjøre noe med hvert av elementene i lista. Noen ganger kan det tenkes at vi ikke skal gjøre noe med alle elementene, men kun de som tilfredsstiller en eller annen betingelse. Dette kan vi løse ved å legge inn en valgsetning i løkka. La oss tenke oss at vi skal legge sammen tall i en liste, men bare ta med tallene som er positive. Med pseudokode vil det se ut som dette:

#\texttt{sum = 0}#
#\texttt{for tallet i tallene:}#
#\quad \quad \texttt{hvis tallet er større enn 0:}#
#\quad \quad \quad \quad \texttt{legg til tallet i sum}#
#\texttt{skriv ut sum}#

Lag et program som finner summen av bare de positive tallene i listen:

#\texttt{tallene = [2, 6, -5, 0, 12, 30, -20]}#

Skriv til slutt ut summen med #\texttt{print}#.

#\,#

LØSNING:

Vi kan lage programmet slik:

#\texttt{tallene = [2, 6, -5, 0, 12, 30, -20]}#
#\texttt{sum = 0}#
#\texttt{for tall in tallene:}#
#\quad \quad \texttt{if tall > 0:}#
#\quad \quad \quad \quad \texttt{sum += tall}#
#\texttt{print(sum)}#

Vi definerer en sum, og setter den til å være #\texttt{0}#. Deretter går vi gjennom lista med en løkke, og sier at for hvert tall som er i lista, skal vi øke summen med tallet, hvis tallet er større enn #\texttt{0}#.

Programmering kan være veldig nyttig for å simulere ulike praktiske situasjoner. Det skal vi se mer på i neste delkapittel, men først viser vi hvordan vi kan telle opp hvor mange ett resultat inntreffer i en liste.

La oss si at vi slår en terning 10 ganger. Vi setter opp resultatene av kastene i en liste slik:

#\texttt{kastene = [1, 4, 3, 2, 4, 6, 6, 5, 3, 2]}#

Vi ser i det neste eksempelet hvordan vi kan telle opp hvor mange firere det finnes i denne listen, og regne ut andelen firere.

Bruk en for-løkke til å telle opp hvor mange firere det er i listen nedenfor. Programmet skal skrive ut antall firere.

#\texttt{[1, 4, 3, 2, 4, 6, 6, 5, 3, 2]}#

LØSNING:

Først legger vi inn listen i koden, vi gir den navnet #\texttt{kastene}#. Så definerer en variabel #\texttt{antallFirere}# og setter denne lik null. Deretter bruker vi en #\texttt{for}#-løkke og går gjennom listen. Hvis vi møter på en 4-er i listen økes variabelen #\texttt{antallFirere}# med #\texttt{1}#. (Hvis vi møter på et annet tall, gjøres ikke noe). Til slutt skriver vi ut resultatet.

I matematikken kan vi simulere hendelser ved å la datamaskinen tilfeldig velge utfallet av småforsøk. Det er datamaskinen veldig god på, siden den jobber lynraskt. Vi skal jobbe mer med dette seinere i kapittelet. Men vi kan også kombinere manuelle forsøk og målinger med datamaskinens gode evne til å regne. Et klassisk eksempel, er å beregne sannsynligheten for å få en firer når du kaster en terning.

Vi har gjennomført et forøk med kast av terning mauelt. Resultatet av kastene har vi satt opp i denne listen:

[2,2,5,4,1,2,4,5,2,6,4,6,4,5,3,2,4,1,2,2,4,1,1,4,2,5,3,2,6]

Lag et program som teller opp antall kast og antall firere. Progammet skal også regne ut sannsynligheten for å få en firer ut fra denne listen.

LØSNING:

Først legger vi inn resultatet av alle kastene som en liste.

Så teller vi antall kast i lista ved å bruke koden

#\texttt{antallKast = len(kastene)}#

Deretter går vi gjennom listen med en #\texttt{for-}#løkke og teller opp antall firere. Antall firere blir lagret med variabelnavn #\texttt{antallFirere}#.

Til slutt finner vi sannsynligheten for å få firer ved å regne ut

#\frac{\texttt{antallFirere}}{\texttt{antallKast}}#

I vårt eksperiment, blir sjansen for å få firer 0,24. Det stemmer ikke med det forventede svaret, som burde bli #\tfrac{1}{6} = 0,167#. Det er fordi vi må trille terningen mange flere ganger for at eksperimentet skal gi oss et nøyaktig svar. Vi skal snart se hvordan vi kan simulere terningkastene med kode.

Cappelen Damm Kontakt: cda-matematikk@cappelendamm.no | Hva er Student? | Personvernerklæring | Rettigheter