• No results found

TDP002 - Imperativ programmering

N/A
N/A
Protected

Academic year: 2022

Share "TDP002 - Imperativ programmering"

Copied!
18
0
0

Loading.... (view fulltext now)

Full text

(1)

TDP002 - Imperativ programmering

Strängar och IO

Eric Elfving

Institutionen för datavetenskap

23 augusti 2016

(2)

Översikt

2/18

Inläsning och utskrift

Typkonvertering och strängformatering

Teckenkodning

Jobba med externa filer

(3)

Inläsning

3/18

Program som gör beräkningar rätt är bra, program där användaren får styra är ofta bättre.

Därför är det bra att låta användaren mata in data.

I Python finns det "ett" sätt att låta användaren mata in data, input

inputger alltid en sträng som resultat

Till input kan man skicka en sträng som ledtext till användaren

(4)

Inläsning

4/18

input

name = input('Mata in ditt namn: ') print("Hej " + name)

Mata in ditt namn: Kalle Hej Kalle

price = input('Mata in pris: ') price = int(price)

products = input('Antal produkter: ') products = int(products)

inventory = price * products

print('Totalt värde: ' + str(inventory))

Mata in pris: 12 Antal produkter: 3

Totalt värde: 36

(5)

Typomvandling

5/18

Funktionerna int och float omvandlar en sträng till ett heltal respektive ett reellt tal

Båda funktionerna kräver att strängen endast innehåller ett numeriskt värde (på rätt format)

På samma sätt kan str omvandla ett värde till en strängrepresentation.

(6)

Utskrift

6/18

>>> print(1,2,3) 1 2 3

>>> print(1,2,3, ... sep='x',

... end=' slut !') 1x2x3 slut !

printanvänds oftast för att skriva ut saker på skärmen

printkan ta flera värden och skriver ut dem

separerade med mellanslag och avslutar med ny rad ('\n')

Om man vill kan detta ändras med sep och end

(7)

Strängformatering

7/18

Funktionen format

printär bra på att skriva ut saker men ibland vill man att det ska se snyggare ut

Då är str.format() bra att ha

Man kan formatera strängar på flera sätt enligt

http://docs.python.org/3/library/string.html#formatspec

Här tar vi upp en kortvariant

Liknar printf-språket en del men är väldigt sofistikerat!

Tar formatbeskrivning på formen {namn:format}

(8)

Strängformatering

8/18

name = input('Förnamn: ') surname = input('Efternamn: ')

message = 'Hej {n} {s}!'.format(n=name,s=surname) print(message)

name = input('Förnamn: ') surname = input('Efternamn: ')

message = 'Hej {} {}!'.format(name,surname) print(message)

Förnamn: Kalle Efternamn: Nilsson Hej Kalle Nilsson!

(9)

Strängformatering

9/18

Formatering av tal

>>> pi = 3.141592 # eller math.pi

>>> print('{}'.format(pi)) 3.141592

>>> print('{:.2f}'.format(pi)) 3.14

>>> print('{:06.3f}'.format(pi)) 03.142

(10)

Strängformatering

10/18

Formatering av tal

print('Tabell över tal i olika talbaser\n' + '='*32) print(' Bin Oct Dec Hex')

for num in range(17):

print('{0:5b}{0:5o}{0:5d}{0:5X}'.format(num))

T a b e l l ö v e r t a l i o l i k a t a l b a s e r

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

B i n Oct Dec Hex

0 0 0 0

1 1 1 1

1 0 2 2 2

1 1 3 3 3

100 4 4 4

1 0 1 5 5 5

1 1 0 6 6 6

1 1 1 7 7 7

1000 1 0 8 8

1 0 0 1 1 1 9 9

1 0 1 0 1 2 1 0 A

1 0 1 1 1 3 1 1 B

1 1 0 0 1 4 1 2 C

1 1 0 1 1 5 1 3 D

1 1 1 0 1 6 1 4 E

(11)

Strängformatering

11/18

Formatering av tal

print('Tabell över tal i olika talbaser\n' + '='*32) print(' Bin Oct Dec Hex')

formatstr = '' for f in 'bodX':

formatstr += '{{0:5{c}}}'.format(c=f) for num in range(17):

print(formatstr.format(num))

(12)

Teckenkodning

12/18

Teckenkodningen är kopplingen mellan det tecken man ser på skärmen och hur det tecknet lagras i datorns minne.

"Vanliga" tecken såsom de vi har på tangentbordet ryms gott och väl i en byte (det räcker ju till hela 256 tecken).

När webben blev större blev det jobbigare att klara sig med endast 256 tecken. Bara japanerna har över 3000 tecken som de tycker man bör kunna efter grundskolan (I ett av deras skriftspråk).

(13)

Teckenkodning

13/18

Unicode

Unicode en global teckenmängd utan specificerad intern representation.

Sedan version 3 är alla strängar I Python kodade i UTF-8.

UTF-8 är en implementation av unicode som tar olika mycket plats beroende på vilket tecken som lagras.

Om du vill ha ett tecken som inte finns på tangentbordet går det att kopiera från tabeller som finns i

http://www.unicode.org/charts/

I python kan man även använda sig av teckenkoden:

'\u00AE'⇒ ® eller alternativt namnet:

(14)

Filhantering

14/18

with open('minfil.txt') as f:

for line in f:

for word in line.split():

print(word, end='_') print()

Ibland får man indata lagrat på en fil

Filer öppnas lättast med with open(...)

Som standard går det endast att läsa från filen

(15)

Filhantering

15/18

Teckenkodning

Vanligtvis öppnar python filer med den teckenkodning som är standard på ditt system

Det kan ändras med encoding-parametern om man vet att filen har en specifik teckenkodning

with open('minfil.txt', encoding='latin1') as f:

for line in f:

for word in line.split():

print(word, end='_') print()

(16)

Filhantering

16/18

Filmoder

with open('minfil.txt', mode='r') as f:

for line in f:

print(line.strip())

Om man vill ändra sättet man öppnar filen på (t.ex.

för att kunna skriva till den) byter man ut 'r' mot något annat enligt nedanstående tabell

Filmod Egenskap

r Öppna för läsning

w Öppna för skrivning (trunkerar innehållet) a Öppna för skrivning i slutet

w+ Öppna för läsning och skrivning

(17)

Filhantering

17/18

Skriva till fil

with open('minfil', 'w') as f:

for val in range(3):

f.write(str(val))

with open('minfil', 'w') as f:

for val in range(3):

print(val, file=f)

Man kan skriva till filer öppnade med 'w' eller 'a'

Man kan göra det med write, men det är lättare med print och file-parametern

(18)

www.liu.se

References

Related documents

• Kommunen medger att länsstyrelsen ändrar antagandebeslutet för detaljplanen för Södersätra och Kastellgården så att hela fastigheten Södersättra 3:19 ingår i

A one-line method is all that is required (code example 13). Duck typing also makes the meta parameter completely generic and transparent. It is generic because any parameter type

• Dela upp resten av högen i två delar: en som innehåller alla kort som är mindre än pivotelementet och en som innehåller alla som är större än eller lika med pivotelementet.

parametrar kan man göra sina funktioner mer generella så att de fungerar för fler

Input är en inbyggd funktion i python som skriver ut en sträng (ledtext) och som därefter väntar på att användaren skall mata in något.. Variabeln namn tilldelas värdet av

DM74LS132 Quad 2-I nput NAND Gat e wit h Schm it t T rigg e r Input Physical Dimensions inches (millimeters) unless otherwise noted (Continued). 14-Lead Plastic

Göra en processinriktad presentation av dokumentplanen/arkivförteckningen.. Dokumentplanering

[r]