Strengar
Ein streng er først og fremst ein sekvens av enkeltteikn, og strengen blir tolka som tekst sjølv om han består av berre tal. I Python er det mange innebygde funksjonar og metodar som kan brukast på strengar. I denne artikkelen skal vi konsentrere oss om ulike måtar å søkje gjennom strengar på. Mens du les, er det lurt om du heile tida prøver å skrive kodane i din eigen editor og køyrer programma så du ser kva du får ut.
Vi må hugse på at Python til liks med all anna programvare ikkje kan forstå innhald før vi tilordnar noko ei meining. Med det meiner vi at til dømes setninga "Det ligg 5 terningar på bordet" ikkje har noka ibuande betydning for programmet anna enn at det er ei lang rekkje med teikn. Til dømes er 5-talet i setninga ikkje mengda 5 for programmet, men berre eit teikn. Vi skal bruke denne setninga for å illustrere ein del av metodane og funksjonane vi kan bruke på strengar, som kan vere nyttige i matematikken.
Når vi skal skrive inn tekst i Python, bruker vi teiknet " på begge sider, slik:
Oppgåve
Beskriv kva som skjer i kommandolinja over.
Vi kan hente ut bestemde teikn frå tekststrengen vår ved å bruke indeks, det vil seie at vi hentar ut det første teiknet ved å skrive setning[0]
. Teikn nummer 4, setning[3]
, er eit mellomrom – det er viktig å hugse på at òg mellomromma er teikn. Hugs òg at du kan telje deg bakover: Vil du finne det siste teiknet i ein streng, bruker du indeksen –1
.
Oppgåve
Kva blir skrive ut dersom du køyrer koden under?
Legg merke til at setning[9]
er det same som "5", altså eit teikn og ikkje talet 5. Dette skjer ikkje berre med tal som er skrive inn som ein del av ein tekststreng, men òg med tal som er gitt som input av ein brukar. Som vi har vist tidlegare, må vi fortelje datamaskina at dette er eit tal dersom vi skal rekne vidare med det. Du er kanskje vand til å bruke float(). Vi kan òg bruke kommandoen int(). Int står for integer, som er det engelske ordet for heiltal. Prøv koden under, og sjekk kva som er skilnaden.
Vi kan finne ut kor mange teikn det er i strengen vår, ved hjelp av kommandoen len(setning)
. Dette kan vere nyttig til dømes dersom ein skal køyre ei lykkje som skal sjekke gjennom alle teikna. Her er det viktig å hugse på at eit mellomrom òg er eit teikn. Setninga vår har 31 teikn. Det kan vi finne ut dersom vi skriv print(len(setning))
. Prøv!
Nokre gonger er det nyttig for oss å kunne sjekke om ein tekststreng (eller ein annan datatype som lister) inneheld bestemde element. Då bruker vi anten in
eller not in
. Vi kan til dømes sjekke om gitte bokstavar finst i setninga vår:
Vi kan bruke in
og not in
for å telje kor mange det er av dei ulike bokstavane i setninga. Det kan vi gjere ved først å plukke ut bokstavane i setninga, for så å gå gjennom setninga ein gong til og telje kor mange vi har av kvar.
Av og til kan det vere formålstenleg å gjere om ein tekststreng til ei liste. Dette gjer vi ved hjelp av kommandoen list(setning). Dersom vi lagar ei liste av setninga vår, får vi ei liste med 31 element, alle saman er teikn. Køyr programmet under, og sjå korleis resultatet blir!
Over har vi laga ei liste av alle elementa i tekststrengen "Det ligg 5 terningar på bordet", men vi ser jo at dette er 6 ulike ord. Det kan vere nyttig å få ei liste der kvart ord har sin eigen plass i lista.
Metoden "split" deler opp tekststrengen ved mellomromma og legg då kvart ord som eit element i ei liste. Prøv koden nedanfor, og forklar kva som skjer på linjene.
Nokre gonger får vi input i programmet vårt der elementa er skilde av andre teikn enn mellomrom. Vi kan bruke split-kommandoen her òg, vi må berre hugse på å fortelje programmet kva teikn som skil dei ulike elementa ved å skrive det inn i parentesen til kommandoen. Dersom skiljeteiknet vårt er eit komma, får vi kommandoen split(",")
. Legg merke til at vi må ha hermeteikn rundt kommaet.
I programmet nedanfor skal vi hente inn ei rekkje med tal frå brukaren. Køyr programmet, og forklar kva som skjer.