Oppg-4-1

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