Testoppgaver

Del 1 - 30 Poeng

1. Følg pseudokoden del 1. (15p)

Følg pseudokoden. 2 deloppgaver.

Her er det to deloppgaver, der deloppgave 2 bygger på programkoden fra deloppgave 1.

Du blir bedt om å utarbeide et program som registrerer informasjon om eierne av tråsykler.

Man skal registrere rammenummer, navn og adresse.

Det skal være mulig å gjøre oppslag på eierinformasjon ved å taste rammenummer

Skriv programmet ut i fra pseudokoden under:

Pseudokode del 1:

  • Opprett en tom dictionary med navn "sykler"
  • Lagre listen "rammenr" som en variabel. (Liste under)
  • For hvert element i listen "rammenr", utfør
    • Les inn navn for bruker
    • Les inn adresse for bruker
    • I dictionary: "rammenummer" som "key" og navn og adresse som values.

rammenr = WBK0132K, VE01562512D, S5A001234, WN17632Z, TA78317B, ME7265T

In [ ]:
sykler = {}
# print(type(sykler))
rammenr = ['WBK0132K', 'VE01562512D', 'S5A001234', 'WN17632Z', 'TA78317B', 'ME7265T']
# print(rammenr)
for element in rammenr:
    print()
    print("Rammenummer: " + element)
    navn = input("Tast inn ditt navn: ")
    adresse = input("Tast inn din adresse: ")
    navn_adresse = navn + " " + adresse
    
    sykler[element] = navn_adresse
    
print(sykler)

# lage en sløyfe som gjør oppslag på rammenummer

while True:
    
    tekstv = str(input("Tast inn rammenr: "))
    
    print(sykler[tekstv])
    
    svar = input("Vil du avslutte? Ja/nei\n>>> ").lower().strip()
    
    if svar == "ja":
        break

2. Følg pseudokoden del 2 (15p)

Bruk koden fra del 1 som utgangspunkt for koden i denne oppgaven. Det vil si at du kan referere til variabler, funksjoner, osv, som ble definert i koden din fra del 1. Skriv programmet etter pseudokoden under.

Del 2.

  • Definer funksjonen "sok_register", som skal ta argumentet "ramme" og gjøre følgende:
    • Søke i dictionary "sykler" etter rammenumret som blir gitt som aergument.
    • Returnere resultatet av søket.
  • Definere funksjonen "main" som skal:
    • Be om input fra bruker om hvilket rammenummer han/hun skal søke informasjon om.
    • Kalle funksjonen "sok_register" og legge resultatet i en variabel med navn.
    • Printe ut resultatet av søket til konsoll.
  • Funksjonen "main" skal kalles hvis brukeren ønsker å søke på flere rammenummer
In [ ]:
# Svar på oppgave 2 kommer her

Del 2 - 20 Poeng

3. Kodeforståelse 1 (10p)

3.1 I koden under er det to feil i main(). Finn feilene.

Dette programmet bruker en dictionary over planeter med deres repektive avstander i millioner km til Sola.

  • Programmet skal, ved hjelp av funksjoner:
    • Sjekke avstanden til Sola for hver planet
    • Hente de fire planetene som er nærmest Sola i en egen liste.
    • Hente de fire planetene som er lengst fra Sola i en egen liste.
  • Print listen over de nærmeste planetene til konsoll

  • Print listen over de planetene som er lengst unna til konsoll.
In [ ]:
# Programkode med feil som er rettet
# Feilene var:
# # get_dist() ble kalt uten parameter "planeter"
# # get_names(korteAvst, lengstAvst) - Parametrene var byttet om

planeter = {'uranus': 2871, 'venus': 108, 'jupiter': 778, 'jorda': 149, \
           'mars': 227, 'merkur': 57, 'neptun': 4497, 'saturn': 1427}

# Hent og sorter avstandene:

def get_dist(planeter):
    avst = []
    for key, value in planeter.items(): # Itererer over key og values i dectionary
        avst.append(value) # Skriver avstandene inn i listen avst
   
    avstSort = sorted(avst) # Oppretter en ny sortert liste

    # Bruke den sorterte lista for å finne de fire nærmest og lengst unna
    kortAvst = avstSort[:4]
    langAvst = avstSort[4:]
    
    return kortAvst, langAvst
    
# Ut i fra listene med avstander hent navnet til planetene nærmest og lengst unna.

def get_names(kortAvst, langAvst):
    kortAvstNavn = []
    langAvstNavn = []
    
    for key,value in planeter.items(): # Itererer over keys og values i dictionary
        if value in kortAvst: # Sjekk om value eksisterer i listen over de korteste avst
            kortAvstNavn.append(key) # Leg key'en til listen
        else:
            langAvstNavn.append(key) # De avstand som ikke er i lista for korte avst
            
    return kortAvstNavn, langAvstNavn

def main():
    korteAvst, lengstAvst = get_dist(planeter) # Feil 1 - parameter planeter manglet
    print(korteAvst)
    print(lengstAvst)
    
    kortAvst, langAvst = get_names(korteAvst, lengstAvst) # Feil 2. Ombytting av parametere
    
    print(kortAvst)
    print(langAvst)
    
main()
    

4 kodeforståelse 2 (10p)

In [ ]:
# 2.2 Finn resultatet av kjøringen(10p)

# Hva er resultatet av kjøringen av koden under gitt x? Forklar kort hva koden gjør.

x = ['p', 'g', 'e', 'j', 'p', 'p', 's', 'p', 'v', 'r', 'm', 'k', 't', 'a', 'b', 'k', 't', 'e']

bak = " "

for i in range(0, len(x), 2):
    bak += x[i]
    
print(bak)

Del 3 - 50 Poeng

5 Programmering 1 (15p)

4.1 Programmering

Dette programmet skal gi brukeren informasjon om hvorvidt en bil holdt en gjennomsnittsfart som var høyere enn tillatt (80 km/t) på en strekning på 3500 meter.

Programmet skal gjøre følgende:

Lag en funksjon "speedFromTime" som tar inn to argumenter, distanse og tid. Funksjonen skal beregne og returnere hastighet (m/s) ut i fra antall sekunder og distanse. Hastighet = distanse/tid.

Lag en funksjon "speedCheck" som tar inn hastighet som argument. Denne skal sjekke om hastigheten var over 80 km/t eller ikke og returnere True eller False basrt på resultatet. Husk at du må gjøre om resultatet fra speedFromTime fra m/s til km/t.

Lag en funksjon "main" som:

1) Henter ut informasjon fra bruker om registreringsnummer og tiden (antall sekunder) den aktuelle bilen brukte på å kjøre strekningen.

2) Kaller funksjonen "speedFromTime"

3) Kaller funksjonen "speedCheck"

4) Hvis hastigheten var over 80 km/t skal det skrives en setning til bruker om registreringsnummer og hastighet.

Så lenge bruker ønsker å skrive inn ny informasjon skal "main" kalles

In [ ]:
# Svar

6 Programmering 2 (15p)

4.2 Programmering

Dette programmet skal generere en liste med 100 tilfeldige tall mellom 3-1000. Print lista til konsoll. Lag en funksjon som sjekker om tallene i lista er primtall (kun delelig med 1 og seg selv). Legg primtallene i en egen liste. Print ut listen over primtall til konsoll.

In [ ]:
# Funksjon som sjekker om tall i en liste er et primtall:

def is_prime(n):
    for i in range(3, n):
        if n % i == 0:
            return False
        return True     
In [ ]:
# Besvarelse

7 Programmering 3 del 1 (10p)

4.3.1 Programmering

Dette er en oppgave med 2 deler. Koden fra del 1 skal også brukes i del 2.

Del 1 - Stave navn baklengs

Lag en funksjon som tar inn et navn. Funksjonen skal snu rekkefølgen på bokstavene i navnet og returnere navnet baklengs.

La brukerne skrive inn et navn som skal sendes til funksjonen.

In [ ]:
# Besvarelse

8 Programmering 3 del 2 (10p)

4.3.2 Programmering

Del 2

Denne delen av programmet skal bruke koden fra del 1. Det vil si at du kan referere til variabler, funksjoner osv som ble definert i koden din fra del 1.

Nå skal du skrive en funksjon som lar brukeren skrive inn navnet fra del 1 i koden baklengs. Sjekk så at rekkefølgen på bokstavene er riktig når man sammenligner med resultatet fra funksjonen fra del1. Hvis navnet blir stavet riktig baklengs, så skal det printes ut en beskjed til bruker. Hvis navnet blir feil stavet baklengs, så skal brukeren få mulighet til å prøve på nytt.

In [ ]:
# Besvarelse