En streng er en tekst som står mellom anførselstegn. Vi kan bruke både enkle og doble anførselstegn, det er det ingen forskjell på i Python. "Hallo, verden!" og 'Hallo, verden!' er altså akkurat det samme. Men vi må innlede og avslutte med samme type tegn. For eksempel vil print("Hallo, verden!') resultere i en feilmelding fordi vi innleder med dobbelt og avslutter med enkelt anførselstegn. Feilen vil også bli markert med grønn bakgrunnsfarge i Thonny.
Vi bør imidlertid være konsekvente, og i på dette nettstedet velger vi å bruke doble anførselstegn. Doble anførselstegn er enkle å finne på tastaturet, de er vanligvis plassert over 2-tallet. Enkle anførselstegn kan være vanskeligere å lokalisere.
Vi kan gjerne ha enkle anførselstegn inni en streng med doble anførselstegn, for eksempel "Hell's Kitchen". Men vi kan ikke ha doble inni doble. For eksempel vil print("Han ble kalt "Oluf" av vennene.") resultere i en feilmelding fordi Python vil tro at anførselstegnet foran Oluf avslutter strengen. Vil vi ha doble anførselstegn inni doble, må vi markere dem med baklengs skråstrek, altså som "Han ble kalt \"Oluf\" av vennene.". Det tolker Python som at anførselstegnet skal skrives ut, ikke at det avslutter strengen. I slike tilfeller kan det imidlertid være et akseptabelt valg å bryte prinsippet om å alltid bruke doble anførselstegn, og i stedet skrive 'Han ble kalt "Oluf" av vennene.'. Samme prinsipp gjelder for enkle anførselstegn inni enkle. Vi kan ikke ha ‘Hell's Kitchen', men må bruke baklengs skråstrek: 'Hell\'s Kitchen'.
Vi kan slå sammen strenger ved hjelp av operatoren +, noe vi kaller å konkatenere strenger. For eksempel vil "Hallo, " + "verden!" bli til strengen "Hallo, verden!". Vi kan også repetere innholdet i en streng ved hjelp av operatoren *. For eksempel vil "hipp " * 3 bli strengen "hipp hipp hipp ".
Strenger kan også tilordnes til variable, for eksempel vil koden
tv_program = "Hell's Kitchen"
tilordne strengen "Hell's Kitchen" til variabelen tv_program.
Analyser Python-koden under, og avgjør hva den skriver ut. Kjør så koden for å sjekke om du har rett.
innledning = "HIPP " * 2 hilsen = (innledning + "HURRA! " ) * 3 print(hilsen)
Det er viktig å skille på strenger og variabelnavn. Strenger står mellom anførselstegn, variabler gjør ikke. Har vi for eksempel en variabel, x, og skriver
print(x)
skrives verdien til variabelen x ut. Men skriver vi
print("x")
skrives bokstaven x ut.
Formaterte strenger
La oss si at vi har to variable, x og y, og ønsker å skrive ut verdien til disse med en passende ledetekst, for eksempel x = 3 og y = 5 hvis x har verdien 3 og y har verdien 5. Det kan vi gjøre med denne Python-koden:
print("x =", x, "og y =", y)
Vi skriver her først ut strengen "x =", deretter verdien til variabelen x, så strengen "og y =", og til slutt verdien til variabelen y.
Men det er tungvint å bygge opp utskrifter på denne måten. Koden er også vanskelig å lese, og vi får skrevet ut et mellomrom etter hvert element, noe som ikke alltid er ønskelig.
Utfordringen er at utskriften skal veksle mellom strenger og variabelverdier. I versjon 3.6 av Python ble det heldigvis introdusert noe som heter formaterte strenger, eller f-strenger, som lar oss håndtere denne utfordringen på en mye mer elegant måte. Vi bruker da bare en enkelt streng, og putter variablene inn i strengen med krøllparenteser rundt. Det vil for eksempel si at "{x}" refererer til verdien til variabelen x, ikke bokstaven x. For å markere at vi har en f-streng, må vi skrive en f foran strengen. Python-koden over kan vi da i stedet skrive som
print(f"x = {x} og y = {y}")
Dette er enklere både å skrive og lese, og vi har full kontroll på hvilke mellomrom som skrives ut.
Det er viktig å huske å ta med f-en foran strengen, ellers blir alt skrevet ut som tekst. Glemmer vi f-en, og skriver for eksempel
print("x = {x} og y = {y}")
får vi skrevet ut x = {x} og y = {y}.
Skriv Python-kode som tilordner en streng du selv velger, til variabelen navn, og et tall du selv velger, til variabelen alder, og så setter sammen navn og alder med en forklarende tekst i en formatert streng som skrives ut med print().
Hvis for eksempel navn = "Per Spellmann" og alder = 33, skal det bli skrevet ut noe slikt som "Per Spellmann er 33 år."
Kilder
-
- Matthes A. (2019). Python Crash Course. no starch press