Föreläsning 13 Testning och strängar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 13.10.2011
Testning Tips för systematisk testning Skriv en liten del av programmet i gången och testa den. Börja från små delar och gå sedan till större helheter när alla beståndsdelar har bekräftats fungera. Kolla olika sorters indata som kan leda till olika situationer. Kolla special- och gränsfall. Kolla att resultatet faktiskt är det rätta! Se till att inte data försvinner på vägen! Varje sats i programmet bör testas! Föreläsning 13 Testning och strängar 2/18
Strängar Unicode-teckenkoder i litteraler Man kan skriva Unicode-värdet för tecken i litteraler istället för tecknet självt. Nyttigt om man vill hålla sig till ASCII-tecken i sin källkod. Praktiskt om tecknet inte finns på tangentbordet. \u hexkod T.ex. u \u00df är samma som u ß. Övning Skriv ut Viel Spaß! med ett program skrivet i ren ASCII. Föreläsning 13 Testning och strängar 3/18
Strängar Strängkonstanter string-modulen innehåller en hel del nyttiga variabler: digits Alla siffror letters Alla bokstäver lowercase Alla små bokstäver uppercase Alla stora bokstäver punctuation Alla skiljetecken whitespace Alla tomrum Värdena kan variera enligt språkvariant. För att få Python att använda systemets språkvariant, anropa locale.setlocale(locale.lc_all, ). Föreläsning 13 Testning och strängar 4/18
count() Räknar hur många gånger en sträng finns i en annan sträng. Tar 1 3 parametrar (från början av följande): sub Delsträngen som sökes i self start Indexet i self att börja söka vid; början om bortlämnad end Indexet i self att sluta söka vid; slutet om bortlämnad Returnerar mängden gånger sub förekommer i self[start:end]. Föreläsning 13 Testning och strängar 5/18
find() Söker första stället en sträng finns i en annan sträng. Tar 1 3 parametrar (från början av följande): sub Delsträngen som sökes i self start Indexet i self att börja söka vid; början om bortlämnad end Indexet i self att sluta söka vid; slutet om bortlämnad Returnerar var (index av första tecken) sub förekommer i self[start:end]; -1 om den inte finns. Föreläsning 13 Testning och strängar 6/18
index() Söker första stället en sträng finns i en annan sträng. Tar 1 3 parametrar (från början av följande): sub Delsträngen som sökes i self start Indexet i self att börja söka vid; början om bortlämnad end Indexet i self att sluta söka vid; slutet om bortlämnad Returnerar var (index av första tecken) sub förekommer i self[start:end]; kastar ValueError om den inte finns. Föreläsning 13 Testning och strängar 7/18
Censor Gör en funktion censor() som tar strängar text och bad och skriver ut indexet på varje ställe i text där bad förekommer. Testa funktionen! Föreläsning 13 Testning och strängar 8/18
isalpha()/isdigit()/islower()/isspace()/isupper() Kollar om strängen består helt av bokstäver/siffror/små bokstäver/tomrum/stora bokstäver. Tar 0 parametrar. Returnerar om strängen består helt av ifrågavarande teckentyper. Föreläsning 13 Testning och strängar 9/18
join() Slå ihop strängarna i en sekvens till en sträng. Tar 1 parameter: en sekvens (t.ex. en lista) av strängar. Returnerar strängarna i sekvens hopslagna i sekvensens ordning till en sträng. Föreläsning 13 Testning och strängar 10/18
lower()/upper() Omvandla en sträng till stora eller små bokstäver. Tar 0 parametrar. Returnerar strängen omvandlad till stora eller små bokstäver. Föreläsning 13 Testning och strängar 11/18
lstrip()/rstrip()/strip() Ta bort givna tecken från strängens början/slut/båda ändor. Tar 0 1 parametrar: en sträng som innehåller alla tecken som ska tas bort (alla tomrum om inte given). Returnerar strängen med alla tecken i strängens början/slut/båda ändor som finns i parametern borttagna. Föreläsning 13 Testning och strängar 12/18
replace() Ersätt en given delsträng i en sträng med en annan. Tar 2 3 parametrar: old Strängen att ersätta new Ersättande strängen count Hur många förekomster av old som ska ersättas Returnerar strängen med de (count första, om angivet) ställen där delsträngen old finns ersatta med new. Föreläsning 13 Testning och strängar 13/18
split() Dela upp en sträng i en lista vid angivna tecken. Tar 0 2 parametrar (från början av följande): split Tecken att dela upp strängen vid (alla tomrum om inte angivet) maxsplit Maximala mängden ställen att dela upp strängen på (obegränsat om inte angivet) Returnerar en lista med strängen delad i upp till maxsplit + 1 delar vid tecknena i split. Om split inte angivit, ta bort alla tomma strängar från resultatet. Föreläsning 13 Testning och strängar 14/18
Censor Utvidga funktionen censor() så att den också ersätter bad med lika många asterisker som det finns tecken i bad varje gång det förekommer i text och returnerar detta. T.ex. censor( Jagar jag hajar?, ja ) returnerar Jagar **g ha**r?. Avancerad version: ersätt bad oberoende om bokstäverna är små eller stora: censor( Jagar jag hajar?, ja ) returnerar **gar **g ha**r?. Testa funktionen! Föreläsning 13 Testning och strängar 15/18
Startparametrar Vad? I de flesta operativsystem kan man ange argument åt ett program när man startar det från t.ex. kommandotolken. I Python finns dessa värden som strängar i startparameterlistan i sys-modulens argv-variabel. I Eclipse finns dessa i Arguments-fliken i Run/Run Configurations... -dialogen. Första elementet i listan är programmets namn, resten är argumenten. Det är vanligen en bra idé att berätta för användaren vilka parametrarna är om inga har angivits men de behövs. Föreläsning 13 Testning och strängar 16/18
Startparametrar Censor Skriv ett huvudprogram som läser text och bad från startparametrarna och skriver ut den censurerade texten. Huvudprogrammet bör kolla att den får två argument och klaga om det här inte är fallet. Testa programmet i Eclipse och i kommandotolken. Föreläsning 13 Testning och strängar 17/18
Slut Nästa föreläsning 18.10.2011 14:15 16:00 i U344 Design, metoder som parametrar Kom ihåg Rond 5 deadline 18.10. Föreläsning 13 Testning och strängar 18/18