Ekstra oppgaver uke 4
Dette er oppgaver/temaer vi jobber med sammen i gruppetimen i uke 4.
Oppgave 1: Lesbarhet
Følgende kode kaster seks terninger og teller hvor mange kaste det tar før man får Yatzy (seks på alle terningene). Koden er rotete og vanskelig å forstå. Forsøk å rydde opp i koden og gjør den mer lesbar.
from random import randint
from sys import exit
j = 0
while True:
# kast 6 terninger
t = []
for i in range(6):
t.append(randint(1, 6))
# sjekk om alle terningene er 6
sjekk = True
for i in range(0, 6):
if t[i]!=6:
sjekk=False
if sjekk == True:
print("Alle terningene er 6! Det tok", j, " kast.")
exit()
j += 1
Tips:
- Begynn med å finne bedre variabel-navn
- Se om du kan gjøre koden mer lesbar ved å lage funksjoner for noe av det som skjer
Oppgave 2
Som del av løsningen vi fant i oppgave 1, skrev vi en egen funksjon for å sjekke om alle terningene er 6.
Vi ønsker nå å i stedet telle hvor mange kast vi bruker på å få hus (4 av ett tall og 2 av et annet). Lag en ny funksjon for å sjekke om terningene gir hus. Tips: Det kan lønne seg å dele opp problemet ved å lage hjelpefunksjoner.
Oppgave 3: Assert
Det er fort gjort å ha små feil i funksjoner av den typen vi skrev i oppgave 2 uten at de blir oppdaget.
Skriv noen assert-statements som sjekker at funksjonen fungerer som den skal.
Oppgave 4: Mer avanserte for-løkker og funksjoner
- Endre funksjonen som kaster terninger til å ta et parameter som sier hvor mange terninger som skal kastes.
- Lag en funksjon som tar en liste over terninger og som returnerer
True
hvis første, tredje, femte, osv. (altså annenhver) terning er 6. - Bruk assert til å sjekke at funksjonen fungerer.
- Ekstra oppgave: Lag en funksjon som returner True hvis de
n
(der n er et parameter) siste terningene er 6.
Ekstraoppgave
Oppgaven er basert på en tidligere eksamensoppgave:
Skriv en funksjon som har en liste med terninger som parameter og som returnerer en verdi av type boolean.
Funksjonen skal sjekke om alle verdiene i listen er i stigende rekkefølge (sortert), og returnere True hvis de er det (False hvis ikke). Det kan være duplikater i listen, men en liste av typen "1, 2, 2, 4" skal returnere True.