Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG

Like dokumenter
Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG

TDT4110 IT Grunnkurs Høst 2015

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

TDT4110 IT Grunnkurs Høst 2017

TDT4110 IT Grunnkurs Høst 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4110 IT Grunnkurs Høst 2016

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Finne ut om en løsning er helt riktig og korrigere ved behov

TDT4110 IT Grunnkurs Høst 2016

Øvingsforelesning 5 Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2012

Eksamensoppgaver 2014

Øvingsforelesning 5 Python (TDT4110)

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Oppsummering fra sist

Læringsmål og pensum. if (be): else (not_to_be):

Hangman. Level. Introduksjon

TDT4110 IT Grunnkurs Høst 2015

Finne ut om en løsning er helt riktig og korrigere ved behov

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

UNIVERSITETET I OSLO

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

INF1000 Eksamen 2014 (modifisert)

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

UNIVERSITETET I OSLO

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Pensum: Starting out with Python

UNIVERSITETET I OSLO

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

INF1000 Eksamen 2014 (modifisert)

Repetisjon Novice Videregående Python PDF

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

UNIVERSITETET I OSLO

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Øvingsforelesning 1 Python (TDT4110)

TDT4105 IT Grunnkurs Høst 2016

Løsningsforslag 2017 eksamen

Øvingsforelesning i Python (TDT4110)

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

IN2010: Algoritmer og Datastrukturer Series 2

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Løsningsforslag Eksamenssett 1 (kl. 09:00-13:00)

UNIVERSITETET I OSLO

Informasjon Eksamen i IN1000 høsten 2017

Kontinuasjonseksamen i TDT4110 Informasjonsteknologi, grunnkurs Mandag 13. august :00 13:00

TDT4105 Informasjonsteknologi, grunnkurs

Øvingsforelesning 7 i Python (TDT4110)

HØGSKOLEN I SØR-TRØNDELAG

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Filbehandling Tekstfiler

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Kryptering med vigenere-metoden

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

LØSNINGSFORSLAG Avsluttende eksamen i TDT4110 Informasjonsteknologi, grunnkurs Tirsdag 11. desember :00 13:00

Avsluttende eksamen i TDT4110 Informasjonsteknologi, grunnkurs Torsdag 8. desember :00 13:00

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

TDT4100 Objektorientert programmering

TDT4110 IT Grunnkurs Høst 2014

UNIVERSITETET I OSLO

Avsluttende eksamen i TDT JSP Informasjonsteknologi, grunnkurs Torsdag 8. desember :00 13:00

EKSAMEN med løsningsforslag

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Steg 1: Rest etter divisjon

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Introduksjon til DARK assembly

IN uke 1. Komme i gang med programmering

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

Øvingsforelesning 3 Python (TDT4110)

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Oppgaver uke 1: Løsningsforslag

Læringsmål og pensum. Algoritmeeffektivitet

Transkript:

Side 1 av 7 Institutt for datateknikk og informasjonsvitenskap Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG Løsningsforslag for følgende oppgaver: Oppgave 1: Flervalgsoppgave (25%) Oppgave 2: Kodeforståelse (15%) Oppgave 3: Programmering reisetid (20%) Oppgave 4: Programmering sensur (40%) Svarark for hurtigsensur Oppgave 1: Flervalgsoppgave (25%) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 b b c d b a c a b c b d a c b a a d a a Oppgave 2 Kodeforståelse (15%) Oppgave 2a (5%) Hva blir skrevet ut til skjerm når du kjører koden som vist under? (3 %) JULENISSEN Forklar med en setning hva funksjonen mystery gjør (2 %) Funksjonen plukker ut annenhver bokstav fra de to listene og starter med liste B. Oppgave 2b (5%) Hva blir skrevet ut til skjerm når du kjører koden som vist under? (3 %) 64 Forklar med en setning hva funksjonen compute gjør (2 %) Rekursiv funksjon som multipliserer et tall med 2 ganger tallet så lenge tallet er mindre enn 10, 1*2*4*8 = 64.

Side 2 av 7 Oppgave 2c (5%) Hva blir skrevet ut til skjerm når du kjører koden som vist under? (3 %) [8, 7, 6, 5, 3, 2, 1] Forklar med en setning hva funksjonen a gjør (2 %) Sorterer en liste med tall i synkende rekkefølge. Oppgave 3 Programmering reisetid (20%) Oppgave 3a (5%) Lag funksjonen readtime def readtime(): hour = -1 while hour<0 or hour>23: hour = int(input("enter hour: ")) if hour<0 or hour>23: print("- ERROR: Hour must be between 0 and 23!") minute = -1 while minute<0 or minute>59: minute = int(input("enter minute: ")) if minute<0 or minute>59: print("- ERROR: Minute must be between 0 and 59!") sec = -1 while sec<0 or sec>59: sec = int(input("enter second: ")) if sec<0 or sec>59: print("- ERROR: Second must be between 0 and 59!") return [hour,minute,sec] Alternativt: def readvalidint(unit, low, high): number = int(input('enter ' + unit.lower() + ': ')) while number < low or number > high: print('- ERROR:', unit, 'must be between', low, 'and', high, '!') number = int(input('enter ' + unit.lower() + ': ')) return number def readtime(): hour = readvalidint('hour', 0, 23) minute = readvalidint('minute', 0, 59) sec = readvalidint('second', 0, 59) return [hour, minute, sec] Oppgave 3b (5%) Lag funksjonen converttime def converttime(time,mode): if mode=='time': hour = time//3600 time = time - (hour*3600) minute = time//60 time = time - (minute*60) sec = time return [hour,minute,sec] elif mode=='sec': return (time[0]*3600+time[1]*60+time[2])

Side 3 av 7 Oppgave 3c (5%) Lag funksjonen traveltime def traveltime(): print("give departure time in hour, minute and second:") starttime=readtime() stoptime=[0,0,0] while (converttime(starttime,'sec')>converttime(stoptime,'sec')): print("give arrival time in hour, minute and second:") stoptime=readtime() if (converttime(starttime,'sec')>converttime(stoptime,'sec')): print("- ERROR: Arrival time must be later than Departure time") traveltime = converttime(stoptime,'sec')-converttime(starttime,'sec') traveltab = converttime(traveltime,'time') print('traveltime:',traveltab[0],'hours,',traveltab[1],'min,',traveltab[2],'sec') Oppgave 3d (5%) Lag funksjonen analyzebusroutes def bustime(busroute): return converttime(busroute[3:5]+[0],'sec')-converttime(busroute[1:3]+[0],'sec') def analyzebusroutes(bustables): slowesttimesec = fastesttimesec = bustime(bustables[0]) slowestbus = fastestbus = BusTables[0][0] for BusRoute in BusTables: if bustime(busroute) > slowesttimesec: slowesttimesec = bustime(busroute) slowestbus = BusRoute[0] elif bustime(busroute) < fastesttimesec: fastesttimesec = bustime(busroute) fastestbus = BusRoute[0] slowesttime = converttime(slowesttimesec,'time') fastesttime = converttime(fastesttimesec,'time') print("the slowest bus route is bus nr.",slowestbus,'and it takes', slowesttime[0],'hour, ',slowesttime[1],'min.') print("the fastest bus route is bus nr.",fastestbus,'and it takes', fastesttime[0],'hour, ',fastesttime[1],'min.') Oppgave 4 Programmering Sensur (40%) Oppgave 4 a) (5%) Lag starten på hovedprogrammet (ikke funksjon) NTNU_scores = (89,77,65,53,41,0) NTNU_letters = ('A','B','C','D','E','F') TASKS = ('1','2a','2b','2c','3a','3b','3c','3d','4a','4b','4c','4d','4e','4f','4g','4h') WEIGHTS = tuple([25]+(15*[5])) Oppgave 4 b) (5%) Lag funksjonen makearray def makearray(numbers,texts): ReturnList=[] for i in range(len(numbers)): ReturnList+= [[Numbers[i],Texts[i]]] return ReturnList

Side 4 av 7 Oppgave 4 c) (5%) Lag funksjonen computescore def computescore(points, WEIGHTS): score=0 for i in range(len(points)): score+=points[i]*weights[i] return score/10 Oppgave 4 d) (5%) Skriv en funksjon score2letter def score2letter(scoresum,limitletters): for item in limitletters: if scoresum>item[0]: return item[1] Oppgave 4 e) (5%) Skriv en funksjon addcandidate def addcandidate(candidatenumber,scores,weights): scoresum=computescore(scores,weights) try: f = open('eksamen.txt','a') s = str(candidatenumber) for number in Scores: s+="\t"+str(number) s+="\t"+str(round(scoresum,1))+"\n" f.write(s) f.close() except Exception as errormessage: print(errormessage) Oppgave 4 f) (5%) Skriv en funksjon readresultfile # Convert a table of strings to table of int def nummarizetable(table): for i in range(len(table)): if (i<len(table)-1): Table[i]=int(Table[i]) else: Table[i]=float(Table[i]) return Table def readresultfile(filename): f = open(filename,'r') results = [] for line in f: line=line.strip() listline = line.split('\t') listline=nummarizetable(listline) results+=[listline] f.close() return results

Side 5 av 7 Oppgave 4 g) (5%) Skriv en funksjon checkresultok def checkresultok(filename, WEIGHTS): allok = True results = readresultfile(filename) count={} for line in results: if(max(line[1:-1])>10 or min(line[1:-1])<0): print("error: Candidate",line[0],"scores are not between 0-10!") allok = False if line[-1]!=computescore(line[1:-1],weights): print("error: Candidate",line[0],"has wrong total score!") allok = False count[line[0]]=count.get(line[0],0) +1 for key in count: if count[key]>1: print("error: Candidate",key,"appears more than once!") allok = False return allok Oppgave 4 h) (5%) Skriv en funksjon listall def listall(filename,limitletters): results = readresultfile(filename) results.sort() # Sorterer etter kandidatnr count = 0 for line in results: grade = score2letter(line[-1], limitletters) print(str(line[0]),str(round(line[-1],1)).rjust(5),grade) count+=1 return count

Side 6 av 7 Transparent for flervalgsoppgave: Viser riktige svar (dekker over feil svar) Kandidatnummer: Fagkode: Antall sider: Program: Dato: Side: Oppgavenr A B C D 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20

Side 7 av 7 Transparent for flervalgsoppgave: Viser feil svar (dekker over riktig svar) Kandidatnummer: Fagkode: Antall sider: Program: Dato: Side: Oppgavenr A B C D 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20