Strenger
En streng er først og fremst en sekvens av enkelttegn, og strengen tolkes som tekst selv om den består av bare tall. I Python er det mange innebygde funksjoner og metoder som kan brukes på strenger. I denne artikkelen skal vi konsentrere oss om ulike måter å søke gjennom strenger på. Mens du leser, er det lurt om du hele tida prøver å skrive kodene i din egen editor og kjører programmene så du ser hva du får ut.
Vi må huske på at Python i likhet med all annen programvare ikke kan forstå innhold før vi tilordner noe en mening. Med det mener vi at for eksempel setningen "Det ligger 5 terninger på bordet" ikke har noen iboende betydning for programmet annet enn at det er en lang rekke med tegn. For eksempel er 5-tallet i setningen ikke mengden 5 for programmet, men kun et tegn. Vi skal bruke denne setningen for å illustrere en del av metodene og funksjonene vi kan bruke på strenger, som kan være nyttige i matematikken.
Når vi skal skrive inn tekst i Python, bruker vi tegnet " på begge sider, slik:
Oppgave
Beskriv hva som skjer i kommandolinja over.
Løsning
Variabelen "setning" blir satt lik tekststrengen "Det ligger 5 terninger på bordet".
Å hente ut enkelttegn fra tekststrenger
Vi kan hente ut bestemte tegn fra tekststrengen vår ved å bruke indeks, det vil si at vi henter ut det første tegnet ved å skrive setning[0]
. Tegn nummer 4, setning[3]
, er et mellomrom – det er viktig å huske på at også mellomrommene er tegn. Husk også at du kan telle deg bakover: Vil du finne det siste tegnet i en streng, bruker du indeksen –1
.
Oppgave
Hva blir skrevet ut hvis du kjører koden under?
Løsning
D
l
.
Gjøre om til tall
Legg merke til at setning[11]
er det samme som "5", altså et tegn og ikke tallet 5. Dette skjer ikke bare med tall som er skrevet inn som en del av en tekststreng, men også med tall som er gitt som input av en bruker. Som vi har vist tidligere, må vi fortelle datamaskinen at dette er et tall hvis vi skal regne videre med det. Du er kanskje vant til å bruke float(). Vi kan også bruke kommandoen int(). Int står for integer, som er det engelske ordet for heltall. Prøv koden under, og sjekk hva som er forskjellen.
Telle antall tegn
Vi kan finne ut hvor mange tegn det er i strengen vår, ved hjelp av kommandoen len(setning)
. Dette kan være nyttig for eksempel hvis man skal kjøre en løkke som skal sjekke gjennom alle tegnene. Her er det viktig å huske på at et mellomrom også er et tegn. Vår setning har 33 tegn. Det kan vi finne ut hvis vi skriver print(len(setning))
. Prøv!
in / not in
Noen ganger er det nyttig for oss å kunne sjekke om en tekststreng (eller en annen datatype som lister) inneholder bestemte element. Da bruker vi enten in
eller not in
. Vi kan for eksempel sjekke om gitte bokstaver finnes i setningen vår:
Vi kan bruke in
og not in
for å telle hvor mange det er av de ulike bokstavene i setningen. Det kan vi gjøre ved først å plukke ut bokstavene i setningen, for så å gå gjennom setningen en gang til og telle hvor mange vi har av hver.
Gjøre tekststreng om til liste
Av og til kan det være hensiktsmessig å gjøre om en tekststreng til ei liste. Dette gjør vi ved hjelp av kommandoen list(setning). Hvis vi lager ei liste av setningen vår, får vi ei liste med 33 elementer, alle sammen er tegn. Kjør programmet under, og se hvordan resultatet blir!
split()
Over har vi lagd ei liste av alle elementene i tekststrengen "Det ligger 5 terninger på bordet", men vi ser jo at dette er 6 ulike ord. Det kan være nyttig å få ei liste der hvert ord har sin egen plass i lista.
Metoden "split" deler opp tekststrengen ved mellomrommene og legger da hvert ord som et element i ei liste. Prøv koden nedenfor, og forklar hva som skjer på linjene.
Forklaring
Linje 1 definerer setningen.
Linje 2 deler opp tekststrengen ved mellomrommene og legger hvert ord som et element i lista "liste".
Linje 3 skriver ut lista med de ulike ordene. Legg merke til at punktumet blir en del av det siste ordet.
Noen ganger får vi input i programmet vårt hvor elementene er skilt av andre tegn enn mellomrom. Vi kan bruke split-kommandoen her også, vi må bare huske på å fortelle programmet hvilket tegn som skiller de ulike elementene ved å skrive det inn i parentesen til kommandoen. Dersom skilletegnet vårt er et komma, får vi kommandoen split(",")
. Legg merke til at vi må ha anførselstegn rundt kommaet.
I programmet nedenfor skal vi hente inn en rekke med tall fra brukeren. Kjør programmet, og forklar hva som skjer.
Forklaring
I linje 1 blir brukeren av programmet bedt om å skrive inn tallene med et vanlig komma mellom hvert tall. Dette blir lagt i tekstvariabelen "tekstinput".
I linje 2 kaller vi metoden "split" ved å skrive navnet på tekststrengen, et punktum og metodenavnet "split". Argumentet til split-metoden er et komma (,), siden vi ønsker at tekststrengen blir delt opp etter dette tegnet. Resultatet blir lagt i listevariabelen "liste".
I linje 3 lager vi ei tom liste "talliste" for alle tallene.
I linje 4 og 5 går vi gjennom lista "liste", gjør om hvert element til et tall og legger dette til i lista "talliste". (Husk at dette er helt nødvendig hvis du skal jobbe videre med elementene i lista som tall.)
I linje 6 blir lista "talliste" skrevet ut (sammen med litt forklarende tekst).