Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans skapar en lista? Vad skiljer listor från strängar? Vad kallas datatyper som hanterar ordnade mängder på ett generellt plan? 2. Vilket är det mest rättframma sättet att i Python skapa en lista? Exemplifiera genom att skriva kod i Python där listan med elementen 1, 3 och 6 tilldelas variabeln minforstalista. 3. Vad kallas fenomenet då en lista är ett element i en annan lista? 4. I Python finns funktionen range som skapar listor med konsekutiva heltal. Hur fungerar range om man anropar denna med a) ett argument? b) två argument? c) tre argument? 5. Hur betecknas en lista utan element i Python? Vad kallas den med ett annat namn? 6. Hur får man åtkomst till ett element i en lista i Python? 7. Vi har tidigare sett att i Python är strängar immutable (icke förändringsbara). Vad gäller för listor i detta hänseende? 8. Antag att tilldelningssatsen tal=[4, 7] är exekverad i Python-miljön. Om Du vill ändra andra elementet till 6, hur gör du då? 9. Antag att samma tilldelningssats som i uppgift 8 är exekverad i Pythonmiljön. Vilka av följande liståtkomstoperationer är korrekta (och i så fall, vilket värde har de): a) tal[-1] b) tal[-2] c) tal[-3] 10. Vi har tidigare traverserat strängar på olika sätt i Python. Hur skulle du enklast traversera listan [ hej, på, dig ] och för varje element i listan skriva ut den på en egen rad på skärmen? Använd Pythons whilesats för att åstadkomma traverseringen. 11. Ändra programmet från uppgift 10, så att det klarar att traversera listor av godtycklig längd. Använd även denna gång Pythons while-sats för att åstadkomma list-traverseringen.
Att fundera på: Hur skulle man kunna använda Pythons for-sats för att åstadkomma traverseringen? 12. in-operatorn är en boolesk operator som testar om ett element ingår i en sekvens. Antag att tilldelningssatsen list=[ hej, på, dig! ] är exekverad i Python-miljön. Vad skulle följande satser i Python ge för värden: hej in list dig in list på in list 13. Pythons for-sats är lämplig att använda tillsammans med listor. Skapa en lista med de första 30 naturliga talen genom att använda Pythons rangefunktion. Skriv sedan ett program i Python som i en for-sats traverserar listan och skriver ut de heltal som är jämnt delbara med tre. Ledning: Använd Pythons modulo-operator för att testa om ett tal är delbart med tre. 14. +- och *-operatorerna fungerar för listor som för strängar i Python. Vad ger följande satser för värden i Python: a=[1,2,3] b=[4,5,6] c=a+b d=a*3 15. []-operatorn fungerar i Python på listor som för strängar. Antag att tilldelningssatserna i uppgift 14 är exekverade. Vilka värden har följande uttryck: a[1:3] b[:4] c[3:] d[:] 16. Listor i Python är mutable, dvs. det är möjligt att ändra element i en befintlig lista. Vad ger följande satser i Python för utskrift: frukt=[ banan, äpple, apelsin, ananas, kiwi ] frukt[1]= citron frukt[2:3]=[ persika, rabarber ] frukt[1:3]=[] frukt[1:1]=[ mango, vindruvor, ] 2
17. del tar bort element från en lista i Python. Vad ger följande satser i Python för utskrift: a=[ ett, två, tre, fyra ] del a[1] a[1:3]=[ två, två och en halv ] del a[1:3] 18. Rita ett tillståndsdiagram för följande tilldelningssatser: a= banan b= banan c=[1,2,3] d=[1,2,3] Hur kommer det sig att tillståndsdiagrammet för a och b resp. c och d skiljer sig åt? 19. Antag att följande tilldelningssatser i Python är exekverade: a=[1,2,3] b=a b[0]=4 Vad kommer print-satsen längst ned ge för resultat? Varför blir det så? Vad kallas det när ett och samma objekt i Python har två eller flera namn? 20. När man vill kopiera innehållet i en lista och skapa en ny instans, vad gör man då enligt kursboken? Hur åstadkommer man det för en lista i Python enklast? Skriv kod för tilldelning av värdet [1,2,3] till listan a. Tilldela listan b samma innehåll som a utan att skapa ett alias. Kopiera i stället innehållet i listan a till b. 21. Rita ett tillståndsdiagram för följande programkörning i Python: lista1=[ hej, på, dig! ] lista2=lista1[:] lista2[0]= hejdå 22. Skriv en funktion i Python, tabortsista, som tar ett argument av typen lista och tar bort sista elementet i listan som refereras i argumentet. Vad händer när man anropar funktionen så här: tabortsista([1,2,3,4,5,6,7,8,9,10]) Besvara frågan genom att rita ett tillståndsdiagram. 23. Skriv om funktionen från uppgift 22 så att den i stället för att förändra den lista som skickas med som parameter i stället returnerar en lista där sista 3
elementet är borttaget. Rita ett tillståndsdiagram för anropet tabortsista([1,2,3]) tillhörande den nya versionen av funktionen. 24. Antag att tilldelningssatsen lista=[ hej, [ på, dig! ]] är exekverad i Python-miljön. Om du vill extrahera ordet på, hur gör du då? 25. Matriser brukar representeras som nästlade listor i Python. Hur skulle man i Python representera matrisen 10 20 30 40 50 60? 70 80 90 Om man vill extrahera andra raden från matrisen, hur gör man då? Om man vill extrahera elementet 60, hur gör man då? 26. I Python finns två användbara funktioner i modulen string för att dela upp resp. slå samman strängar: split resp. join. Vad ger följande Python-kod för utskrifter: text= Hej på dej din lakej! deladtext=string.split(text) print deladtext deladtext2=string.split(text, ej ) print delattext2 print string.join(deladtext2, ej ) 27. Fundera ut när värdena av uttrycken text resp. string.join(string.split(text)) skiljer sig åt i Python om text är en variabel med ett värde av typen sträng. Datorövningar kapitel 8 28. Prova att i IDLE-miljön köra tilldelningssatsen i uppgift 2 enligt ovan. Se om resultatet 29. Prova att i IDLE-miljön implementera programmet från uppgift 8 enligt 30. Prova att i IDLE-miljön köra exemplen från uppgift 9 enligt ovan. Se om resultaten 31. Prova att i IDLE-miljön implementera programmen från uppgift 10 och 11 enligt ovan. Se om resultaten 32. Provkör satserna från uppgift 12 i IDLE-miljön. Se om resultaten 4
33. Prova att i IDLE-miljön implementera programmet från uppgift 13 enligt 34. Provkör satserna från uppgifterna 14-17 i IDLE-miljön. Se om resultaten 35. Provkör satserna från uppgift 18 i IDLE-miljön. Använd Pythons idfunktion för att se respektive objekts identitet. Se om resultatet 36. Provkör satserna från uppgift 19 i IDLE-miljön. Se om resultatet 37. Prova att i IDLE-miljön implementera programmet från uppgift 20 enligt 38. Provkör satserna från uppgift 21 i IDLE-miljön. Använd Pythons idfunktion för att se respektive objekts identitet. Se om resultatet 39. Implementera funktionen tabortsista i IDLE-miljön enligt uppgift 22-23 ovan. Se om resultaten 40. Provkör satserna från uppgift 24 i IDLE-miljön. Se om resultatet 41. Implementera matrisen och extraktionerna från uppgift 25 enligt ovan i IDLE-miljön. Se om resultaten 42. Provkör satserna från uppgift 26 i IDLE-miljön. Se om resultaten 5