Øving 4 – Oppgave 1
a)
Programmet under har tre feil som gjør at det ikke kjører, og ikke gir riktig resultat i print-setningen. Rett opp programmet.
""" Dette programmet tar inn en liste med tall og printer ut antallet unike tall, og hvilke tall som er unike. """ ## tall = [1,3,8,31,5,16,7,6,45,44,3,21,1,31,5,7,7,6,5,14,3,12,2,4,5,11,6,8,1,3,8,31,5,16,7,6,45,44, 3,21,1,31,5,7,7,6,5,14,3,12,2,4,5,11,6,8] # Funksjon som finner unike tall i en liste def unik(liste1): unike_liste = [] # Initier tom liste for x in liste1: # loop gjennom lista som tas inn if x not in unike_liste: # Sjekk om elementet eksisterer i lista unike_liste.append(x) # Legger nye unike tall til i unik-lista return liste1 # Returnerer den unike listen # Funksjon som sjekker hvilke tall i en liste som er unike, og hvor mange unike tall det er def liste_sjekk(liste1): unikeTall = unik() # Kaller unik()-funksjonen med listen som er gitt som argument lengdeUnike = len(unikeTall) # Finner lengden på lista med unike tall som blir lagt i variablen unikeTall return lengdeUnike, unikeTall # Returnerer antall unike tall, og de unike tallene. unike, lengde = liste_sjekk(tall) # Kall liste_sjekk() på tall-listen og legg resultatene i variabler print('Listen har', lengde, 'unike tall. De unike tallene er', unike)
Løsningsforslag:
""" Dette programmet tar inn en liste med tall og printer ut antallet unike tall, og hvilke tall som er unike. """ ## tall = [1,3,8,31,5,16,7,6,45,44,3,21,1,31,5,7,7,6,5,14,3,12,2,4,5,11,6,8,1,3,8,31,5,16,7,6,45,44, 3,21,1,31,5,7,7,6,5,14,3,12,2,4,5,11,6,8] # Funksjon som finner unike tall i en liste def unik(liste1): unike_liste = [] # Initier tom liste for x in liste1: # sjekk om tallet eksisterer i lista if x not in unike_liste: unike_liste.append(x) # Legger nye unike tall til i lista over unike tall return unike_liste # Returnerer den unike listen # Funksjon som sjekker hvilke tall i en liste som er unike, og hvor mange unike tall det er def liste_sjekk(liste1): unikeTall = unik(liste1) # Kaller unik()-funksjonen med listen som er gitt som argument lengdeUnike = len(unikeTall) # Finner lengden på lista med unike tall som blir lagt i variablen unikeTall return unikeTall, lengdeUnike # Returnerer antall unike tall, og de unike tallene. unike, lengde = liste_sjekk(tall) # Kall liste_sjekk() på tall-listen og legg resultatene i variabler print('Listen har', lengde, 'unike tall. De unike tallene er', unike)
b.)
Koden under refererer, på ulike steder, til variabler som alle har det samme navnet «num». Hvorfor skaper ikke det problemer for kjøringen av programmet?
num = int(input('Hva er tallet? ')) def tallMagi(tall1): num = tall1*2 return num def tallTull(tall1): num = 0 if tall1 // 2 == 5: num = 1 else: num = 2 return num en = tallMagi(num) to = tallTull(num) print('Resultatet er: ', num, en, to)
Løsningsforslag:
Svar: lokalt skop på «num»-variablene inni funksjonene, og det at funksjonene returnerer «num» gir ikke problemer fordi man gir verdiene som returneres nye variabelnavn når funksjonene kalles.