Python vecka 41-42: Individuell programmering

Relevanta dokument
Erfarenheter från labben

Objektorienterad programmering D2

Hur man programmerar. Exempel på problemlösning i Python

Tentaupplägg denna gång

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Föreläsning 1 & 2 INTRODUKTION

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Programmeringsteknik med C och Matlab

Chapter 3: Using Classes and Objects

Instruktioner för dig som ska söka till Mattekollo 2016

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Sätt att skriva ut binärträd

Uppgift 1 (Oläsliga krypterade meddelanden)

Planering av ett större program, del 2 - for och listor. Linda Mannila

Föreläsning 6: Introduktion av listor

DD1311 Programmeringsteknik för CL1 Laborationer läsåret

Tentamen OOP

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Programmering för språkteknologer II, HT2014. Rum

Tentamen TEN1 HI

Uppgifter teknik HT17 (uppdaterad v. 40)

Tentaupplägg denna gång

Laboration: Whitebox- och blackboxtesting

Erfarenheter från labben

Övningsuppgifter kapitel 8

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Tentamen i Introduktion till programmering

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

E-post för nybörjare

Grundläggande programmering med C# 7,5 högskolepoäng

Använda Python Laboration 1 GruDat, DD1344

Programmeringsuppgifter 1

Föreläsning 11. Giriga algoritmer

Björn Abelli Programmeringens grunder med exempel i C#

Dugga Datastrukturer (DAT036)

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen, EDAA10 Programmering i Java

729G04 Programmering och diskret matematik

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Tentamen, EDAA20/EDA501 Programmering

Användarhandledning Version 1.2

Objektsamlingar i Java

HI1024 Programmering, grundkurs TEN

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Flexibel meny i Studentportalen

NyA-webben Nyheter och planerad vidareutveckling

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Instruktion för att slutföra registreringen

TDP Regler

Omvandla din dator till en flerspråkig maskin

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 3.1: Datastrukturer, en översikt

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Valet 2010 på facebook!

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

SmiNet 2 Manual Webanmälan

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

Tentamen i Objektorienterad programmering

Google Apps For Education

Valet 2010 på facebook!

Programmeringsolympiaden 2012 Kvalificering

2. Hur tycker du att stämningen i sjuan i stort har förändrats under året glädje, trygghet, gemenskap och kommunikation?

Föreläsning 13 och 14: Binära träd

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

SMD 134 Objektorienterad programmering

Programmering A. Johan Eliasson

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt.

En handledning för studerande på Högskolan Kristianstad

Användarmanual Jobb i Stan. CV-Handboken. Registrering, jobbsökning mm. Copyright Aditro. All rights reserved.

Vanliga frågor och svar om Förskollärarutbildningen med inslag av validering utannonsering till höstterminen 2016

Frågebanker, frågeuppsättningar och slumpvisa block

Redovisa i e-möten via Adobe Connect

729G04 Programmering och diskret matematik. Python 3: Loopar

Torun Berlind Elin Önstorp Sandra Gustavsson Klas Nordberg. Föreläsningar Lektioner Laborationer Projekt

Introduktion till datormiljön och Python

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Tentamen IE1204 Digital design

Uppgift 1 ( Betyg 3 uppgift )

Lathund för överföring av rapporter och ljudfiler

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

TAIU07 Matematiska beräkningar med Matlab

Objektorienterad programmering i Java I

Problemlösning och funktioner Grundkurs i programmering med Python

Grundläggande datalogi - Övning 1

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Ändra, kopiera eller radera publikation (staff)

En guide till FirstClass

Datalogi för E Övning 3

MMA132: Laboration 1 Introduktion till MATLAB

Transkript:

Python vecka 41-42: Individuell programmering Under veckorna 41 och 42 övar vi individuell programmering. Syftet är att befästa och kontrollera kunskaper och färdigheter från tidigare veckor. Inget nytt material kommer att presenteras eller behöva läsas in, utan vi ägnar oss helt och hållet att lösa relativt enkla (jämfört med senaste labbarna) programmeringsuppgifter i Python. Labtiden reduceras till 2 timmar per lab, och indelningen i grupper upphör tillfälligt. Detta innebär att intensiteten på kursen minskar under vecka 41-42. Kursen kommer sedan att ta ny fart med java i vecka 43. Detta är tentavecka i de parallella kurserna, och några kan vilja koncentrera sig så mycket som möjligt på tentaplugg den veckan. Därför publiceras programmeringslabben för vecka 43 redan nu. Den är inte begreppsmässigt svår men innehåller en del inläsningsmoment och handhavandeträning. Du kan med fördel börja jobba med den snarast, speciellt inläsningen. Det går bra att använda schemalagda tillfällen till att fråga handledarna om java. Vecka 41: Individuell laboration Syftet med denna laboration är att befästa kunskaper och öva individuell programmering inför det individuella programmeringsprovet. Här labbar du alltså själv vid datorn. Labtiden är 1 timme och 45 minuter. Det är tillåtet att förbereda lösningar hemma och att diskutera lösningar med kamrater och labledare, men tänk på att vid det individuella provet nästa gång kommer du inte att få uppgifterna i förväg, ingen kommunikation med andra är tillåten, och labledarna kommer inte att ge någon hjälp alls. Det kan alltså vara väl värt att försöka åtminstone några uppgifter under sådana omständigheter. Denna lab, liksom det individuella provet, använder filen words.txt i kursens filarea texter. Den innehåller en tämligen komplett engelsk ordlista. En viktig föreberedelse är därför att du kollar att du snabbt kan öppna och läsa filen. Förbered gärna genom att göra en funktion som läser in alla ord till en lista. Obs: vissa typer av programmeringsfel, tex om du av misstag skriver ut hela words.txt, kan få Python och IDLE att storkna så mycket att du måste slå ihjäl dem från Windows; har man riktig otur så kan de sedan inte startas igen (av en anledning som vi kommer att ta upp senare i kursen) utan du måste logga ut och logga in igen först. Detta är en onödig tidsspillan, speciellt på det individuella provet. Prova därför alltid programmen först på en kortare lista med ord. Du får här och även vid det individuella provet fritt använda all kod du skrivit själv tidigare på denna kurs. Du får också använda Internet och kursböcker. Du får förstås inte kopiera kod som någon annan har skrivit. Under denna lab är det

tillåtet att prata med andra, men under provet får du inte prata med någon annan vare sig i labbet eller på distans. För godkänt på denna laboration krävs närvaro och effektivt arbete under den obligatoriska labtiden på fredag, och nöjaktig redovisning av repetionsfrågorna nedan. Det går inte att få inteckning mot högre betyg. Det är inte tänkt att alla uppgifter ska lösas under labben, du får själv välja vad du vill jobba med. Här finns också proven från 2010-2012 att öva på. De som vill kan på fredag få öva på förra årets pythonprov, under samma omständigheter som det riktiga provet, dvs ni får inte uppgifterna i förväg och får inte diskutera med andra. Detta är frivilligt och enbart till för att ni ska vänja er vid situationen. OBS att labbarna under vecka 41-42 bara är två timmar och STSA och STSB labbar vid olika tidpunkter (se schemat). Studenter som har efternamn som börjar på A- L labbar i 1312, K- Ö labbar i 1313. Vecka 42: individuellt prov Syftet med det individuella provet 17/10 är att slutligt kontrollera färdigheter och kunskaper i python. Det kommer att ha tre uppgifter. För godkänt krävs minst en uppgift helt korrekt löst. För inteckningar mot betyg 4 och 5 krävs två resp. tre uppgifter lösta. Helt korrekta lösningar ger här dubbla inteckningar. STS2A gör provet kl 10.15-12.00, STS2B gör provet 12.15-14.00 (OBS tiden) Studenter som har efternamn som börjar på A- L gör provet i 1312, K- Ö i 1313. Se till att komma i god tid. Lämpliga föreberedelser precis innan provet är att hitta en fungerande dator, logga in, starta python, och ta fram gamla uppgifter så att de finns tillgängliga om du skulle behöva. Provtiden är 90 minuter. De första minutrarna är det inte tillåtet att röra mus eller tangentbord. Läs då igenom uppgifterna noga och övertyga dig om att du förstår. Feltolkade uppgifter är en av de vanligare anledningarna att studenter misslyckas med provet. Efter 90 minuter avbryts all programmering och examinationen tar vid under cirka 15 minuter. Sitt tyst och stilla och vänta på din tur. Förbered genom att ta fram kod och provkörningar. Examinationen är summarisk och tar ungefär en minut per person, normalt visar du bara kod och provkörningar. Om du underkänns har du rätt till en kort förklaring varför. Sitt kvar när du examinerats tills alla är klara, för att inte störa andra. Det är tillåtet att använda egen dator under provet, men du ansvarar i så fall själv för att den fungerar. Du får fritt använda all kod du skrivit själv tidigare på denna kurs. Du får också använda kursböcker och Internet, men inte för att kommunicera med andra i realtid. Du får förstås inte kopiera kod som någon

annan har skrivit. Du får inte prata med någon annan vare sig i labbet eller på distans. Du får ha med dig dryck och godis men inte mat, tänk på att ni sitter ganska nära och kan störa varandra. Vill du lyssna på musik i hörlurar måste det vara på mycket låg volym. Eftersom tiden för provet är begränsad rekommenderas att ta hand om toabehov innan. Om du anser att en uppgift är otydlig eller att datorn inte fungerar får du på kalla labledaren. Labledaren kommer inte att ge hjälp annat än att förtydliga uppgifter och se till att datorn fungerar. För de som inte godkänns finns ett omprov planerat tisdag 11/11. Det kommer att gå till på precis samma sätt men kommer bara att innehålla en uppgift för godkänt. På omprovet kan du alltså inte få inteckningar mot högre betyg.

Repetitionsfrågor Frågorna ska kunna besvaras under den obligatoriska labben 10/10. Samtliga är repetitionsfrågor från tidigare labbar. 1. Vad är skillnaden mellan argument och parameter? 2. Vad means med ett booleskt uttryck (boolean expression)? 3. Vad kommer att hända när detta kör, och varför? def f(): x=1 f() print x 4. I vilken ordning kommer satserna A-E att utföras i följande program? def f(x): A g(x) g(x-1) B def g(x): C if x>1: D E f(2) Vad blir skillnaden om g() istället definierats som (obs variabelnamnen!) def g(y): C if x>1: D E Vad blir skillnaden om g() istället definierats som def g(y): C if y>1: D E

5. Förklara skillnaden mellan f() och g() nedan och i vilka sammanhang de kan användas. Vad är respektive funktions returvärde? Vad händer om man kör print f(2) respektive print g(2)? def f(x): print x*x def g(x): return x*x 6. Förklara skillnaden mellan while och for, och i vilka sammanhang respektiv looptyp är lämplig 7. Förklara skillanden mellan for n in lista: och for n in range(len(lista)): och i vilka sammanhang respektiv looptyp är lämplig 8. Förklara skillnaderna mellan följande: for c in Joachim : print c for x in range(10): print x for x in range(10): print x for c in Joachim : print c for x in range(10): print x for c in Joachim : print c for x in range(10): for c in Joachim : print x print c 9. Vad är likheter och skillnader mella a = a + [b] och a.append(b)? 10. Vad är skillnaden mellan ett alias och en clone? 11. Förklara skillnaden mellan returvärden och sidoeffekter och när man vill använda dem. 12. Förklara skillnaden mellan uppslagslista och lista, och när man vill använda dem. 13. Förklara varför man bör dela upp ett program i små funktioner.

14. När man kör följande program får man följande felmeddelande. Förklara vad som är orsaken till felet och hur det ska åtgärdas. def addthreeandprint(lista): lista = lista.append(3) for element in lista: print element addthreeandprint([1,2]) for element in lista: TypeError: 'NoneType' object is not iterable 15. Vad gör en kompilator? 16. Vad innehåller en processorkärna? 17. Vad är skillnaden mellan en assemblerinstruktion och ett pythonkommando? 18. Vad är registerallokering? 19. Redogör kortfattat för exekveringscykeln för maskinkodsinstruktioner.

Övningsuppgifter i Python 1. Skriv en funktion som har ett heltalsargument och returnerar True om argumentet är ett primtal, annars returnerar det False. Ett primtal är ett tal större än eller lika med 2 som inte är delbart med något tal större än 1 och mindre än sig självt. 2. Gör en engelsk korsordshjälp om fungerar som följer. Man ska kunna mata in ett ord där luckorna skrivs?. Till exempel, användaren ska kunna skriva str?n? och få svaren strand, strang, string, strong, strung, strunt. Varje frågetecken svarar alltså mot exakt en bokstav. En lista av engelska ord finns i filen words.txt. 3. Skriv en funktion som har ett heltalsargument och returnerar en lista med de tal som talet är jämnt delbart med (utom talet självt). För till exempel 12 ska listan bli [1,2,3,4,6]. 4. Som vokaler i engelska språket räknar vi i denna uppgift bokstäverna aeuio, och som konsonanter alla andra bokstäver utom y (y fungerar ibland som konsonant och ibland som vokal och därför struntar vi i den just nu). Skriv ett program som räknar ut hur många engelska ord har precis lika många konsonanter som vokaler. En lista av engelska ord finns i filen words.txt. 5. Skriv en funktion som har en lista med tal som argument och returnerar True om något tal i listan förkommer minst två gånger, och annars False. 6. Skriv en funktion som tar två strängar s1 och s2 som parametrar, och returnerar antalet engelska ord som börjar med s1 och slutar med s2. En lista av engelska ord finns i filen words.txt. 7. En heltalstrippel (a,b,c) är pytagoreisk om 0<a<b<c och a 2 + b 2 = c 2. Skriv ett program som skriver ut alla pytagoreiska taltrippler där b=a+1 och a,b,c < 100. 8. I exempelvis orden elm och access kommer alla bokstäver i bokstavsordning. Skriv ett program som räknar ut i hur många engelska ord alla bokstäver kommer i bokstavsordning. En lista av engelska ord finns i filen words.txt. Tips: I laboration 2 skrev du ett program för att kolla om en lista är sorterad, det kan användas för att lösa ett delproblem här.

9. Skriv en funktion som tar som indata en lista av tal och returnerar en lista där alla jämna tal är borttagna. Till exempel: om indata är [1,7,1,2,4,3,2] ska resultatet bli [1,7,1,3]. 10. Skriv ett program som räknar ut det största antalet f som finns i ett engelskt ord. En lista av engelska ord finns i filen words.txt. Demonstrera också en test av programmet med en egen lista. Till exempel för [ affe, finurlig, fyfasen ] ska svaret bli 2. 11. Man översätter till rövarspråket på följande sätt. Vokaler lämnas oförändrade. Konsonanter dubbleras och bokstaven o sätts mellan dem. En specialregel är att h ersätts med hot (och alltså inte hoh, som är för svåruttalat). Till exempel blir Joachim på rövarspråket Jojoacochotimom. Skriv en pythonfunktion som översätter en textsträng till rövarspråket. 12. Skriv ett program som upprepade gånger läser in ett ord och ett förslag på översättning till rövarspråket, och kollar om det är rätt. Det ska använda sig av funktionen i uppgift 11 ovan för att bestämma den korrekta översättnignen. Programmet slutar när man matar in ett tomt ord, och beter sig enligt exemplet nedan: >>> checkrov() Ange ett ord: pontus Vad tror du det blir på rövarspråket: poponontotusos Rätt! Ange ett ord: hej Vad tror du det blir på rövarspråket: hohejoj Fel, det ska vara hotejoj Ange ett ord: Hejdå >>> 13. Det engelska ordet aura har egenskapen att dess översättning till rövarspråket, aurora, också är ett engelskt ord. Skriv ett program som listar de engelska ord som är sådana att översättningen till rövarspråket också är ett engelskt ord (det finns 15 stycken). 14. Skriv ett pythonprogram som läser in en textsträng innehållande ett romerskt tal, och skriver ut värdet som ett vanligt decimalt heltal. Algoritmen är följande. Romerska talsystemet använder de sju siffrorna I, V, X, L, C, D, M som har värdena 1, 5, 10, 50, 100, 500, 1000. För att få värdet av ett romerskt tal ska värdet av alla ingående siffror adderas, med ett undantag: om en siffra står omedelbart till vänster om en större siffra räknas den negativt. Så är alltså XI = 11 och IX = 9. Det finns vissa regler för hur romerska tal kan skrivas. Till exempel får samma siffra inte upprepas mer än tre gånger; det betyder tex att IIII inte är ett korrekt tal. Det korrekta sättet att skriva 1999 är MCMXCIX och inget annat. I denna uppgift får du anta att textsträngen innehåller ett korrekt romerskt tal och behöver inte beakta vad programmet gör om det inte är korrekt.

Till exempel får programmet svara 4 om det får textsträngen IIII, svara 8 för textsträngen IVIV och svara 1999 för textsträngen MIM. Det enda viktiga här är att om indata är ett korrekt romerskt tal så ska dess värde räknas ut. Tips: använd ett dictionary för att lagra de romerska siffrorna och deras värden. 15. Skriv ett pythonprogram som läser in en textsträng innehållande ett ord och översätter ordet till allspråket. Allspråket är ett kodspråk där början av ett ord flyttas till slutet, och "all" läggs till efteråt. Det finns några olika varianter och här använder vi den som wikipedia anser vanligast, nämligen den där alla konsonanter före första vokalen flyttas till slutet av ordet: knasig blir asigknall (asig- kn- all). Vid redovisningen, visa koden och de testfall du provat. Du får utgå från att ordet har minst en vokal. Tänk på att vokalen kan inleda ordet (i så fall flyttas inga konsonanter). En god ide är att dela upp i funktioner, tex en som hittar platsen för den första vokalen i ett ord, och testa den separat. Extra material i Horstmann: Kursboken i Java, Big Java Late Objects av Horstmann, innehåller en del material och programmeringsuppgifter som myckert väl kan lösas i Python. Rekommenderat är: 1.7 (s. 16-21), inkl self- check (s. 19-20) Review exexercises R1.12- R1.18 (s. 24) 2.4 (s. 57-58), uppgifter P2.16, P2.17, P2.21, P2.22, P2.23, P2.24, P2.28, P2.29, P2.31 (s. 73-77) Uppgifter R3.9, R3.11 (s. 123) 4.6 inklusive self- check (s. 162-164), Howto 4.1 (s. 169-171) uppgifter P4.1- P4.3 (s. 188) P4.22- P4.23 (s. 192)

Ordinarie prov 2010-2012: Individuellt prov i Python. Joachim Parrow Prov 14/10/2010 Tid: 1.5 timme. Lös varje uppgift med ett Pythonprogram. Krav på lösning: lämpliga variabelnamn, god uppdelning i funktioner, redovisa hur du testat. För godkänt krävs minst en valfri uppgift fullständigt löst. För dubbla inteckningar mot betyg 4 krävs minst två valfria uppgifter fullständigt lösta. För dubbla inteckningar mot betyg 5 krävs alla tre uppgifterna fullständigt lösta. Ofullständigheter som småfel, otydlig koduppdelning, olämpliga variabelnamn eller inte tillräckligt redovisad uttestning betyder att endast enkel inteckning mot 4 eller 5 ges. 1. Det första primtalet är 2. Det andra primtalet är 3. Gör en funktion som givet ett heltal n räknar ut det n:te primtalet. Vilket är det tusende primtalet? (Anm: här har man stor hjälp om man löst uppgift 1 ovan!) 2. Gör en funktion som givet ett heltal n beräknar vilket det n:te engelska ordet är i bokstavsordning när orden läses baklänges. Vilket blir då det tusende ordet? Ledtråd: Pythons inbyggda metod sort() är ganska effektiv. Den klarar lätt en lista med 100000 element. 3. En sammanslagning av två listor är en lista som får sina element alternerande från de två listorna. Exempelvis, sammanslagningen av [1,2,3] och [4,5,6] är [1,4,2,5,3,6]. Om den ena listan är längre än den andra börjar man om från början med den kortare listan, tex sammanslagningen av [1,2] och [3,4,5,6,7] är [1,3,2,4,1,5,2,6,1,7], och sammanslagningen av [2,3] och [1] är [2,1,3,1]. Du får utgå från att ingen av listorna är tom. Skriv en funktion som beräknar sammanslagningen av två listor. Rätt svar? 1: 7919, 2: boffola

Individuellt prov i Python. Tid: 1.5 timme. Joachim Parrow oktober 2011 Krav på lösning: lämpliga variabelnamn, god uppdelning i funktioner, redovisa hur du testat. Det är inte tillåtet att kopiera kod som någon annan har skrivit eller att på något sätt konferera med någon annan utom labhandledaren. Du får inte avslöja provuppgift för student som ännu inte gjort provet. Provet kan ge dubbla inteckningar mot högre betyg. Ofullständigheter som småfel, otydlig koduppdelning, olämpliga variabelnamn eller inte tillräckligt redovisad testning betyder att endast enkel inteckning ges. För godkänt 1. Ett heltals faktorsumma är summan av alla tal som delar talet jämnt, inklusive 1 men utom talet självt. Till exempel är faktorsumman av 10 lika med 1+2+5=8, och faktorsumman av 20 är 1 + 2+ 4 + 5 + 10 = 22. Vi söker här de tal större än 1 som är lika med sin faktorsumma. Skriv ett program som skriver ut alla sådana tal under 1000. (Rätt svar är tre stycken: 6, 28, 496). För inteckning till betyg 4 2. En sträng A sägs innehålla en annan sträng B om bokstäverna i B förekommer i A i rätt ordning, men inte nödvändigtvis intill varandra. Till exempel, arkansas innehåller ars och även tex akaa men däremot inte kk eller nk. Obs att aa innehåller a men att a inte innehåller aa. Tomma strängen innehålls i alla strängar. Skriv en pythonfunktion som har två strängar som parametrar och returnerar en boolean som är True om den första strängen innehåller den andra, annars False. Formulera ett tillräckligt antal testfall för att säkerställa att den fungerar. Skriv upp alla fall du testat. Vid redovisningen, visa vilka testfall du provat. Ledtråd: ett sätt är att använda strängmetoden find() inuti en loop. För inteckning till betyg 5 3. I filarean texter finns en engelsk ordlista (words.txt), kopiera den till ditt konto. På http://user.it.uu.se/~joachim/namn.txt finns en lista med förnamn på personer i STS årskurs 2. Skriv ett program som skriver ut alla namn och hur många engelska ord varje namn innehåller genom att använda lösningen till uppgiften för betyg 4 ovan. Utskriften kommer att börja: David 8 Johan 6 Felicia 5 Hanna 6 OBS: Programmet ska öppna klasslistan som en url det är inte tillåtet att klippa och klistra in klasslistan i pythonkoden eller i en fil. Omvandla alla bokstäver i namnet till lowercase. Skriv ut varje rad så fort antal innehållna ord räknats ut det kan ta någon sekund för varje namn och mer än en minut för hela listan. (Värdelöst vetande: Caroline och Christoffer innehåller 44 ord var, vilket är mest i klassen. Pär är ensam om att innehålla 0 ord.)

Individuellt prov i Python. Tid: 1.5 timme. Joachim Parrow oktober 2012 Krav på lösning: lämpliga variabelnamn, god uppdelning i funktioner, redovisa hur du testat. Det är inte tillåtet att kopiera kod som någon annan har skrivit eller att på något sätt konferera med någon annan utom labhandledaren. Du får inte avslöja provuppgift för student som ännu inte gjort provet. Provet kan ge dubbla inteckningar mot högre betyg: för inteckning till betyg 4 ska de två första uppgifterna lösas, och för inteckning till betyg 5 ska alla tre uppgifterna lösas. Ofullständigheter som småfel, otydlig koduppdelning, olämpliga variabelnamn eller inte tillräckligt redovisad testning betyder att endast enkel inteckning ges. För godkänt Man roterar ett tal genom att ta sista siffran och sätta den först. Exempelvis 345 blir 534 och 12345678 blir 81234567. Finn alla tal större än 0 och mindre än 10**6 som blir precis fem gånger så stort om det roteras. Enklaste sättet att rotera ett tal är att omvandla mellan sträng och heltal med funktionerna str() och int(), eftersom du lätt kan ta ut sista tecknet i en sträng. Gör först en funktion som roterar ett tal och testa den noga var beredd att redovisa testfallen. Lös sedan uppgiften genom att anropa funktionen i en loop. (Rätt svar: bara ett tal, 142857) För inteckning till betyg 4 En del engelska ord som roteras på samma sätt som i uppgiften ovan bildar nya enegelska ord. Exempelvis ours sour och creams scream. Använd filen words.txt för att räkna ut hur många ord som fortfarande blir engelska ord när de roteras. Testa först på några listor av ord som du själv konstruerar för att övertyga dig om att programmet fungerar. Redovisa testfallen. För att klara hela words.txt måste man lagra orden i en effektiv datastruktur en vanlig lista kommer att göra att programmet tar för lång tid! (Rätt svar: 973) För inteckning till betyg 5 Skriv en pythonfunktion som tar en lista som parameter, och returnerar en lista som innehåller de element i parametern som bara förekommer en gång. Till exempel [2,5,2,3,8,6,5,8] ska ge resultatet [3,6]. I resultatlistan ska elementen komma i samma ordning som i den ursprungliga listan. Formulera och provkör en mängd testfall som du anser är tillräcklig för att övertyga dig om att programmet är riktigt. Redovisa testfallen. LYCKA TILL!