Tie koodariksi

Programmeringens grunder

Språk:

Kapitel 10: Datatyper

Alla data som finns lagrade i programmets minne har en datatyp som påverkar deras behandling. Hittills har vi behandlat två olika datatyper: tal och strängar.

Skillnaden mellan tal och strängar

Skillnaden mellan tal och strängar är att vi kan göra räkneoperationer med tal och behandla strängar ett tecken i taget. Följande kod åskådliggör skillnaden:
print(18+4)
print("18"+"4")
Kodens utskrift är följande:
22
184
I koden är 18 och 4 tal, så +-tecknet adderar dem. På motsvarande sätt är "18" och "4" strängar, så +-tecknet kombinerar deras tecken i följd.

Tecken i strängar

Funktionen len anger strängens längd, dvs. antalet tecken. Dessutom anger beteckningen [] ett tecken på en viss plats i strängen. Platserna har numrerats med heltal från och med 0.

Till exempel skriver följande kod ut strängens längd och de två första tecknen:

x = "banan"
print(len(x))
print(x[0])
print(x[1])
Programmets utskrift är följande:
5
b
a
Vi kan också gå igenom samtliga tecken i strängen med for-slingan.
x = "banan"
for c in x:
    print(c)
Programmet fungerar så här:
b
a
n
a
n

Från tal till teckensträng

Vi kan konvertera ett tal till en sträng med funktionen str, vilket gör att vi kommer åt de siffror som finns i talet.

Följande program anger till exempel antalet siffror i talet 123123:

x = 123**123
print(x)
s = str(x)
print(len(s))
Programmets utskrift är följande:
11437436793461719009988029522806627674621807845185...
258
Talet 123123 innehåller alltså 258 siffror.

Från teckensträng till tal

På motsvarande sätt kan vi omvandla en sträng som består av siffror till ett tal med funktionen int.

Vi kan till exempel räkna ut summan av siffrorna i talet 123123:

x = 123**123
summa = 0
for c in str(x):
    summa += int(c)
print(summa)

Här måste vi konvertera typ två gånger. Först omvandlar vi talet till en sträng för att komma åt siffrorna i det. Därefter konverterar vi varje siffra till ett tal för att kunna addera dem.

Programmet ger följande resultat:

1242

Summan av siffrorna i talet 123123 är alltså 1242.


Uppgift 1 Olöst

Fakulteten av 5 har tre siffror (5! = 1*2*3*4*5 = 120). Hur många siffror har fakulteten av 1000?

Skriv ditt program här:


Uppgift 2 Olöst

Talet 37827 har två gånger siffran 7. Hur många gånger har talet 999999 siffran 7?

Skriv ditt program här:


Uppgift 3 Olöst

Talet 22785 har tre jämna siffror. Hur många jämna siffror har talet 999999?

Skriv ditt program här:


Uppgift 4 Olöst

Talen 1,2,...,10 har sammanlagt 11 siffror. Hur många siffror har talen 1,2,...,1000?

Skriv ditt program här:


Uppgift 5 Olöst

Summan av siffrorna i talen 1,2,...,10 är 1+2+3+4+5+6+7+8+9+1+0 = 46. Vad är summan av siffrorna i talen 1,2,...,1000?

Skriv ditt program här:


Uppgift 6 Olöst

Ett positivt heltal är ett lyckotal om varje siffra är 4 eller 7. De första lyckotalen är 4, 7, 44, 47, 74 ja 77.

Skriv ett program som skriver ut alla lyckotal som är högst 10000, från minst till störst.

Skriv ditt program här: