729G74 - IT och programmering, grundkurs. Dugga. 2016-12-08. Kl. 14.00 till 16.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier Uppgifter: Duggan består av 14 frågor uppdelade på 3 delar. För godkänd dugga: Varje enskild del på duggan måste vara godkänd för att få godkänt på hela duggan. På del 1 krävs 4 av 5 poäng. På del 2 krävs 5 av 7 poäng. På del 3 krävs 6 av 9 poäng. Frågor på duggan: Examinator är närvarande i lokalen i början av duggan och besöker sedan lokalen kl. 15. Du kan dock ställa frågor via meddelandesystemet (se instruktionsbladet). Om du har funderingar som du inte kan få svar på, skriv ner dessa och hur du tolkat eventuella oklarheter som kommentarer i koden. Om det är systemet som krånglar, kan en av tentavakterna kontakta examinatorn. Inlämning: Lämna in duggan genom att skicka in den via meddelandesystemet. Lämna in en fil med svar på alla uppgifter genom fråga 1. Namn både på filen och i filen: Se till att döpa din fil som innehåller dina svar till <ditt liuid>.py (t.ex. jodfo042.py) och att ditt namn och LiU-ID också finns i en kommentar inuti filen. 1
Del 1 (uppg 1-3) För att få godkänt på del 1 krävs 4 av 5 poäng. Uppgift 1 (1p) Skriv en funktion som heter add_vat(value) som tar in ett tal som argument och returnerar ett flyttal som är 125% av det tal som kom in (multiplicera med 1,25). Uppgift 2 (1p) Skriv en funktion som heter combine_lists(list1, list2) som tar in två listor som argument och returnerar en ny lista (använd inte list.append()) som består av innehållet i den första listan följt av innehållet i den andra listan. Exempel: Anropet combine_lists([1, 2, 3], ["a", "b", "c"]) ska returnera listan [1, 2, 3, "a", "b", "c"]. Uppgift 3 (3p) a) Skriv en funktion first_in_list(values) som tar in en lista som argument och returnerar det första elementet i listan. b) Skriv en funktion second_in_list(values) som tar in en lista som argument och returnerar det andra elementet i listan. c) Skriv en funktion last_in_list(values) som tar in en lista som argument och returnerar det sista elementet i listan. 2
Del 2 (uppg 4-8) För att få godkänt på del 2 krävs 5 av 7 poäng. Uppgift 4 (1p) Skriv funktionen greeting(name) som tar emot en sträng med ett namn som värde. Funktionen returnerar sedan hälsningsfrasen "Hej " + name + "!" förrutom när namnet som skickats in böjar på "P". I dessa fall ska strängen "Hej " + name + ", du har världens finaste namn!". Exempel: Anropet greeting("hera") ska returnera strängen "Hej Hera!". Anropet greeting("pythagoras") ska returnera strängen "Hej Pythagoras, du har världens finaste namn!". Uppgift 5 (2p) Skriv funktionen get_grade(score) som tar in en siffra (argumentet score) som antingen ett heltal eller ett flyttal) och returnerar en sträng med betyget som man får när man har score poäng. Betygsgränserna är följande: Betyget "G" returneras om poängen är 25 eller högre. Är poängen högre än 40 returneras betyget "VG". Vid mindre än 25 poäng returneras "U". Uppgift 6 (1p) Skriv funktionen create_number_to_number_list(start_number, end_number) som ska skapa och returnera en lista som innehåller siffror från start_number till end_number. Både start_number och end_number är heltal. start_number kommer också alltid att vara lägre än end_number. Anropet create_number_to_number_list(5, 9) ska alltså returnera listan [5, 6, 7, 8, 9] Uppgift 7 (2p) Skriv funktionen count_long_words(words) som får in en lista med strängar. Funktionen ska returnera antalet ord som innehåller fler än 5 tecken. Exempel: Anropet count_long_words(["hej", "hopp", "propp", "knoppa"]) ska alltså returnera 1. 3
Uppgift 8 (1p) Skriv funktionen double_all_values(value_list) som tar in en lista med tal. Funktionen ska returnera en lista där alla de ursprungliga talet har multiplicerats med 2. Exempel: Anropet double_all_values([3, 9, 1]) ska returnera [6, 18, 2]. 4
Del 3 (uppg 9-14) För godkänt på del 3 krävs 6 av 9 poäng. Uppgift 9 (1p) Skriv funktionen key_exists(key, d) som tar in ett dictionary och returnerar True om nyckeln key finns bland dictionaryts nycklar. Annars returneras False. Uppgift 10 (1p) Skriv funktionen value_exists1(value, d) som tar in ett dictionary och returnerar True om värdet value finns bland dictionaryts värden. Returnera False om det inte finns. Anta att dictionaryt bara innehåller siffror eller strängar. Uppgift 11 (2p) Skriv funktionen value_exists2(value, d) som tar in ett dictionary och returnerar True om värdet value finns bland dictionaryts värden. Returnera False om det inte finns. Dictionaryts värden ska kunna vara siffror, strängar eller icke-nästlade listor. Funktionen ska även leta efter värdet value i eventuella listor. Om vi letar efter värdet 'hejsan' i dictionaryt { "a": "bokstäver", "b": ['h', 'hejsan'] } så ska funktionen returnera True Uppgift 12 (1p) Skriv funktionen add_to_dict(key, value, d) som lägger till värdet value till dictionaryt d. Du behöver inte bry dig om värdet eller nyckeln redan finns. Funktionen behöver inte returnera dictionaryt. Uppgift 13 (1p) Skriv funktionen flatten_list() som får in en nästlad lista som enda argument. De inre listorna innehåller inga listor. Funktionen ska returnera en icke-nästlad lista som innehåller alla värden i de inre listorna. Exempel: Anropet flatten_list([[1, 2], [3], [1, 2, 3]] ska alltså returnera listan [1, 2, 3, 1, 2, 3]. 5
Uppgift 14 (3p) Skriv funktionen sum_of_ints(nested_values) som får in en lista som innehåller strängar, flyttal, heltal och listor. De inre listorna innehåller strängar, flyttal och heltal. Exempel på input till sum_of_ints(): ["hej", 2, ["hoppsan", "ludd"], [3, 4.23, "300"]]. Funktionen sum_of_ints() ska summera alla heltal oavsett vilken nivå de ligger på och returnera detta heltal. Om ovanstående lista hade varit input så skulle alltså sum_of_ints() returnerat 5. 6