Ø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.
