Detta skapar en PDF som du sedan kan skriva ut. Du kan även spara ner PDFn och skriva ut senare.
Titel på utskriften?
Tack för ditt bidrag
Om vi kan använda det så lägger vi upp det på sidan. Nedan en länk till ditt bidrag om du vill spara det.
Spara som ...
Du sparar ditt skript under detta namn och kan sedan hämta tillbaka det med samma namn.
Läs in
Läs in ett tidigare sparat skript. Obs att du enbart kan läsa in skript i den webbläsare där du sparade skriptet. Vill du kunna läsa in och spara skript oberoende av webbläsare, så behöver du skaffa ett login (enkelt och gratis).
Skicka in bidrag
Föreslå rubrik
Beskriv vad din kod gör
Skapa kort länk
Använd en kort URL för att skicka länk till koden via SMS eller epost. När mottagaren klickar på länken, så öppnas denna webbsida, med din kod och din text. Länken rensas bort automatiskt om den inte används.
Rubrik (frivilligt)
Beskrivning (frivilligt)
Länk (kopiera hela)
Strängar
Beskrivning av grunderna i hur du manipulerar strängar i python.
Skapa och skriva ut strängar
Att skapa en sträng är enkelt.
namn = "Olle"
print(namn)
namn = "Olle"
print(namn)
Vi kan skapa väldigt långa texter över flera rader såhär ...
text = """
Detta är en väldigt lång
text över flera rader. För
att skapa detta inleder vi med 3 stycken
citat och avslutar med 3 stycken citat.
"""
print(text)
text = """
Detta är en väldigt lång
text över flera rader. För
att skapa detta inleder vi med 3 stycken
citat och avslutar med 3 stycken citat.
"""
print(text)
Specialtecken i en sträng
Ibland behöver man specialtecken i strängen. Säg tex att vi önskar citat -tecken i vår sträng. Hur löser vi det, då strängar omges av citat när de tilldelas? Vi löser detta genom att placera back-slash \ framför citattecknet.
txt = "vi hade ett \"möte\" med rektor"
print(txt)
txt = "vi hade ett \"möte\" med rektor"
print(txt)
Det finns ett trick ytterligare. Det är även tillåtet att markera en sträng med enkel -citat. Genom att omge strängen med enkel -citat, så kan vi inne i strängen använda vanliga citat.
txt = 'Det var en väldigt intressant "fest" kan man säga'
print(txt)
txt = 'Det var en väldigt intressant "fest" kan man säga'
print(txt)
Ibland kanske man vill ha backslash, t.ex. i en sökväg. Då använder man escape-tecknet och därefter en baskslash.
Det kanske känns en smula osnyggt och instabilt hålla öronkoll på escape -tecken och riktiga backslash. Hur gör man om man behöver dubbla backslash? I python finns alltid ett verktyg ytterligare i bakfickan ...
rå sträng
Man kan även skapa en rå sträng. Om man behöver ange text sökvägar för filer (i windows används tex backslash i sökvägar) eller har specialtecken som helt enkelt är jobbiga få dit, då kan man skapa en rå sträng.
Det gör vi genom ett litet r framför strängen. Detta löser de festa problem utom citat -teckengrejen som fortfarande måste löses enligt konceptet här ovan.
namn1 = "Olle"
namn2 = "Ville"
text = namn1 + " är kompis med " + namn2
print(text)
namn1 = "Olle"
namn2 = "Ville"
text = namn1 + " är kompis med " + namn2
print(text)
Kom dock ihåg att du kan bara bygga ihop strängar med strängar. Om du behöver siffror i din sträng, som exempel, då måste du konvertera siffran till sträng för att det skall fungera.
namn1 = "Olle"
ar = "20"
text = namn1 + " är "+str(ar)+" år gammal"
print(text)
namn1 = "Olle"
ar = "20"
text = namn1 + " är "+str(ar)+" år gammal"
print(text)
Strängens längd med len()
Vi kan enkelt få veta hur lång vår sträng är med len()
namn = "Olle"
antal = len(namn)
print(antal)
namn = "Olle"
antal = len(namn)
print(antal)
Strängens enskilda tecken
Strängens tecken kan vi komma åt som individer genom dess index. Första tecknet är index 0.
str = "Detta är en sträng"
print(str[0])
print(str[1])
str = "Detta är en sträng"
print(str[0])
print(str[1])
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
D
e
t
t
a
ä
r
e
n
s
t
r
ä
n
g
Men vi kan inte ändra enskilda tecken (som vi kan i listor). Men vi kan tilldela strängen som helhet ett nytt värde.
namn = "Olle"
print(namn[0])
namn = "Julia"
print(namn[0])
namn = "Olle"
print(namn[0])
namn = "Julia"
print(namn[0])
Vi kan faktiskt gå bakvägen med negativt index. Det betyder att positionen räknas bakifrån. Sista bokstaven är då -1.
namn = "Olle"
print(namn[-1])
print(namn[-4])
namn = "Olle"
print(namn[-1])
print(namn[-4])
Komma åt ett segment av tecken
Vi kan komma åt segment av bokstäver. Första siffran är den position där vi startar, där 0 är första bokstaven. Den andra siffran stannar vi innan.
namn = "Trappuppgång"
print(namn[1:5])
print(namn[5:8])
namn = "Trappuppgång"
print(namn[1:5])
print(namn[5:8])
Om vi skippar siffran före : så antas att den är 0 (dvs från start) och om vi skippar sista efter : så antas vi menar till slutet på strängen.
namn = "Trappuppgång"
print(namn[0:5])
print(namn[5:])
namn = "Trappuppgång"
print(namn[0:5])
print(namn[5:])
Vi kan även även använda negativa index. Så för att t.ex. plocka ut de 3 sista bokstäverna i en sträng. Vi startar alltså vid -3, vilket 3 från slutet. Sedan går vi till slutet.
s = "Detta är en text som slutar med Hej"
slutet = s[-3:]
print(slutet)
s = "Detta är en text som slutar med Hej"
slutet = s[-3:]
print(slutet)
Säg att vi vill plocka bort första tecknet i en sträng.
s = "telekommunikation"
print(s)
s = s[1:]
print(s)
s = s[1:]
print(s)
s = s[1:]
print(s)
s = "telekommunikation"
print(s)
s = s[1:]
print(s)
s = s[1:]
print(s)
s = s[1:]
print(s)
Vi kan loopa till strängen är bortskalad framifrån. Varför fungerar det? Som du lärde dig i logik, så är en tom sträng = ingenting = false. Så när inget är kvar slutar while snurra.
s = "telekommunikation"
while(s):
s = s[1:]
print(s)
s = "telekommunikation"
while(s):
s = s[1:]
print(s)
Eller sista tecknet...
s = "telekommunikation"
print(s)
s = s[:-1]
print(s)
s = s[:-1]
print(s)
s = s[:-1]
print(s)
s = "telekommunikation"
print(s)
s = s[:-1]
print(s)
s = s[:-1]
print(s)
s = s[:-1]
print(s)
Vi kan loopa till strängen är bortskalad bakifrån. Varför fungerar det? Som du lärde dig i logik, så är en tom sträng = ingenting = false. Så när inget är while färdig.
s = "telekommunikation"
while(s):
s = s[:-1]
print(s)
s = "telekommunikation"
while(s):
s = s[:-1]
print(s)
När du längre fram läst om listor och split så kommer du förstå att det är väldigt användbart att kunna slice:a i strängar och listor såhär, dvs att demontera data och bygga ihop på nytt.
tentafråga
Vad blir utskriften? Vi startar på tecken -2. Obs att -1 är sista tecknet (finns inget -0), så -2 är näst-sista tecknet. Det står inget efter : vilket betyder att vi läser fram till slutet.
s = 'typhoon'[-2:]
print(s)
s = 'typhoon'[-2:]
print(s)
stega (3:e parametern)
Vi kan sätta en siffra i en 3e slot och det är hur mycket den skall stega vid slice.
Plockar ut varannan bokstav...
s = "telekommunikation"
s2 = s[::2]
print(s2)
s = "telekommunikation"
s2 = s[::2]
print(s2)
Vi vänder strängen baklänges
s = "telekommunikation"
s2 = s[::-1]
print(s2)
s = "telekommunikation"
s2 = s[::-1]
print(s2)
strip()
Säg att vi är osäkra på om det ligger space i slutet av strängen. Sånt kan hända t.ex. om vi t.ex. läser in data från en fil. Vi kan säkerställa att eventulla mellan plockas bort med strip().
s = " Detta är en text som slutar med Hej "
s = s.strip()
slutet = s[-3:]
print(slutet)
s = " Detta är en text som slutar med Hej "
s = s.strip()
slutet = s[-3:]
print(slutet)
Klipper ut första ordet...
word = "telefon apparat"
word = word[:word.index(' ')]
print(word)
word = "telefon apparat"
word = word[:word.index(' ')]
print(word)
Iterera över en sträng
Vi kan iterera över strängen såhär. Dvs vi skapar en loop från 0 som räknar upp till len(namn). Observera att om len(namn) som i detta fall är 4, så får vi en loop mellan 0 och 3. Men det är helt i sin ordning då en sträng med 4 bokstäver indexeras från 0 till 3.
namn = "Olle"
for i in range(0,len(namn)):
print(namn[i])
namn = "Olle"
for i in range(0,len(namn)):
print(namn[i])
I ovan sitation så skapar vi en loop där variabeln i ökar från 0 till 3 genom varje varv i loopen. Med denna siffra i kan vi indexera bokstäverna i strängen namn.
Vi kan göra samma sak på ett lite smidigare sätt.
namn = "Olle"
for t in namn:
print(t)
namn = "Olle"
for t in namn:
print(t)
Med denna konstruktion så kommer t i varje varv, med start från första, vara en bokstav i strängen namn. Vi får samma slutresultat men koden är mindre och enklare.
Ibland behöver vi indexet och då är det smartare loopa med range. Behöver vi inte indexet, så är det snyggare skriva som ovan.
Delmängd av sträng
Vi kan testa om en mindre sträng finns inuti en större.
namn = "Olle"
print("ll" in namn)
namn = "Olle"
print("ll" in namn)
Eller ...
namn = "Olle"
print("ck" in namn)
print("ck" in "Nicklas")
namn = "Olle"
print("ck" in namn)
print("ck" in "Nicklas")
Formatera utskrifter med %
Det finns olika sätt att formatera utskrifter så att de blir snygga. Ett arv från kodningens barndom (språket C) är bl.a. dessa koder, som går att använda i print.
Kod
Beskrivning
%d
integer decimal
%i
integer decimal
%o
oktal (bas 8)
%x
hexadecimal (bas 16)
%X
HEXadecimal (bas 16)
%e
floating point exp form
%E
floating point EXP form
%f
floating point decimal form
%F
floating point decimal form
%c
enstaka tecken
%r
Konv. till sträng med repr()
%s
Konv. till sträng med str()
%a
Konv. till sträng med ascii()
Studera följande ....
namn1 = "Olle"
namn2 = "Ville"
print("%s är kompis med %s" %(namn1,namn2))
namn1 = "Olle"
namn2 = "Ville"
print("%s är kompis med %s" %(namn1,namn2))
Fungerar med siffror också
x = 10
y = 10
print("%d * %d" %(x,y))
x = 10
y = 10
print("%d * %d" %(x,y))
Fungerar med flyttal också
pi = 3.14
radien = 10
arean = pi * radien * radien
print("arean = pi * radien*radien = %f * %f * %f = %f" %(pi,radien,radien,arean))
pi = 3.14
radien = 10
arean = pi * radien * radien
print("arean = pi * radien*radien = %f * %f * %f = %f" %(pi,radien,radien,arean))
Vi kan formatera flyttalen. Säg att vi vill ha max 2 decimaler.
Ytterligare en användbar formateringsmöjlighet, potentiellt enklare än ovan c-koder, i python, är f-strings. Vi stoppar in ett litet f framför vår sträng och kan då stoppa in våra variabler direkt i strängen inom { .. }, vilka sedan substitueras mot dess värden.
namn1 = "Olle"
namn2 = "Ville"
print(f"{namn1} är kompis med {namn2}")
namn1 = "Olle"
namn2 = "Ville"
print(f"{namn1} är kompis med {namn2}")
Vi kan även använda siffror och t.o.m. räkna lite.
x = 4
y = 3
print(f"{x} * ({y} + 1) = {x * (y + 1)}")
x = 4
y = 3
print(f"{x} * ({y} + 1) = {x * (y + 1)}")
format
Genom att använda format kan sofistikerad formatering uppnås. Nedan är bara ett enstaka exempel, då format är ett helt eget kapitel. Läs mer under format.
Du sätter ett litet r framför citat och då behöver du inga escape -tecken i strängen. Mycket bra om man har sökvägar till filer t.ex. eller andra strängar med komplicerade tecken.
En rå sträng är en väldigt ohövlig sträng full av svordomar