About
Swaroop C H is 27 years of age. He graduated in B.E. (Computer Science) from PESIT, Bangalore, India. He has previously worked at Yahoo! and Adobe.
Page
Support
Personal tools
COLLECTION
Collection
Python nb-no:Grunnleggende
From Notes
Å bare kunne skrive 'Hello World' er ikke nok for deg? Du har lyst til gjøre mer enn det - du vil ta noe input, manipulere det og få noe nytt ut av det. Dette kan du få til med konstanter og variabler.
Contents |
[edit] Bokstavelige konstanter
En bokstavelig konstant er et tall, som for eksempel 5, 1.23, 9.25e-3, eller en streng, som 'Dette er en streng' eller "Det er en streng!". De kalles bokstavelige fordi de er bokstavelige - du bruker verdiene deres bokstavelig. Tallet 2 representerer alltid seg selv og ingenting annet - det er konstant fordi du ikke kan forandre verdien. Derfor omtaler man alle disse som bokstavelige konstanter.
[edit] Tall
Man har tre typer tall - heltall, flyttall og komplekse tall.
- Et heltall kan for eksempel være 2; de er bare hele tall.
- Flyttall kan for eksempel være 3.23 og 52.3E-4. E-en forteller at tallet foran skal ganges med en tierpotens, med tallet etter E som eksponent. I dette tilfellet betyr 52.3E-4 det samme som 52.3 * 10-4.
- Komplekse tall kan for eksempel være (-5+4j) og (2.3 - 4.6j).
- Bemerkning til norske lesere
- Python bruker punktum for å skille mellom heltall og desimaler i stedet for komma.
- Bemerkning til erfarne programmerere
- Det finnes ingen egen type for lange heltall. Den vanlige heltall-typen kan være så stor som man vil.
[edit] Strenger
En streng er en sekvens med karakterer. Strenger er altså bare en haug med ord. Ordene kan være skrevet på engelsk eller et annet språk som støttes av Unicode-standarden, altså nesten alle språk i verden, også norsk.
- Bemerkning til erfarne programmerere
- Det finnes ingen "ASCII-only"-strenger fordi Unicode er en oppgradering av ASCII.
- Som standard blir strenger skrevet i UTF-8.
Jeg kan garantere at du kommer til å bruke strenger i nesten hvert eneste Python-program du skal skrive, så følg med.
[edit] Enkle hermetegn
Du kan skrive strenger ved hjelp av enkle hermetegn, som 'Siter meg på dette'. Alle mellomrom og tabulatorer blir tatt med.
[edit] Doble hermetegn
Strenger med doble hermetegn virker på akkurat samme måte som strenger med enkle hermetegn gjør. Et eksempel er "Hva heter du?"
[edit] Triple hermetegn
Du kan lage strenger som går over flere linjer ved å bruke triple hermetegn - (""" eller '''). Du kan bruke enkle hermetegn og doble hermetegn fritt innenfor de triple hermetegnene. Et eksempel er
'''Dette er en flerlinjers streng. Dette er den første linjen
Dette er den andre linjen.
"Er det Magnus' bil?" sa hun
"Nei, den er min" svarte han
'''
[edit] Escape-sekvenser
Tenk deg at du vil ha en streng som inneholder et enkelthermetegn ('); hvordan skal du skrive noe sånt? For eksempel skal du skrive Er det Magnus' bil?. Du kan ikke skrive 'Er det Magnus' bil?' fordi Python vil bli forvirret over hvor strengen starter og slutter. Du må si ifra om at det ene hermetegnet ikke betyr at strengen er slutt. Dette gjør du med en escape-sekvens. Du skriver det enkle hermetegnet som \' - legg merke til at skråstreken er vendt bakover. Nå kan du skrive strengen som 'Er det Magnus\' bil?'.
En annen måte å skrive akkurat denne strengen på er "Er det Magnus' bil?"; du kunne brukt doble hermetegn. På samme måte må du bruke en escape-sekvens for å bruke et dobbelt hermetegn inni en streng med doble hermetegn. Du kan også skrive bakovervendte skråstreker med en escape-sekvens: \\
Hva hvis du ville skrive en streng med to linjer? Du kan bruke triple hermetegn, som jeg viste tidligere, eller du kan bruke en escape-sekvens for å starte en ny linje - \n. For eksempel kan du skrive Dette er den første linjen\nDette er den andre linjen. Tabulatoren er også en nyttig escape-sekvens: \t. Det er mange flere, men jeg har bare nevnt de nyttigste.
Du bør merke deg at en enkelt bakovervendt skråstrek på slutten av en linje i en streng betyr at strengen fortsetter på neste linje, uten at Python skal legge til en ny linje i outputen. For eksempel:
"Dette er den første setningen.\ Dette er den andre setningen."
betyr det samme som "Dette er den første setningen. Dette er den andre setningen.".
[edit] Rå strenger
Hvis du skal skrive en streng Python ikke skal behandle etterpå, som å endre escape-sekvenser til spesielle tegn, må du lage en rå streng ved å skrive en r eller R foran strengen. For eksempel kan du skrive r"Linjeskift skrives med \n".
[edit] Strenger er uforanderlige
Dette betyr at du ikke kan forandre en streng når den først er laget. Selv om det kan virke dumt, er det egentlig ikke det. Du skal få se at dette ikke er en begrensning senere.
[edit] Automatisk mellomrom mellom strenger
Hvis du setter to strenger ved siden av hverandre lager Python automatisk mellomrom mellom dem. For eksempel blir 'Hva' 'heter du?' automatisk gjort om til "Hva heter du?".
- Bemerkning til C/C++-programmerere
- Det er ingen egen char-datatype i Python. Du behøver den egentlig ikke, og jeg er sikker på at du ikke vil savne den.
- Bemerkning til Perl/PHP-programmerere
- Husk at strenger med enkle og doble hermetegn er det samme. De er ikke forskjellige på noen måte.
- Bemerkning dersom du bruker regulære uttrykk
- Bruk alltid rå strenger når du holder på med regulære uttrykk. Ellers blir du nødt til å ha mange bakovervendte skråstreker. For eksempel kan du skrive tilbakereferanser som '\\1' eller r'\1'.
[edit] Formatmetoden
Noen ganger har man lyst til å lage strenger fra annen informasjon. Her må du bruke format()-metoden.
#!/usr/bin/python # Filnavn: str_format.py alder = 25 navn = 'Swaroop' print('{0} er {1} år gammel'.format(navn, alder)) print('Hvorfor leker {0} med den pytonen?'.format(navn))
Output:
$ python str_format.py Swaroop er 25 år gammel Hvorfor leker Swaroop med den pytonen?
Hvordan det virker:
En streng kan ha forskjellige navn (eller spesifikasjoner på fagspråket) og man kan bruke format-metoden for å erstatte spesifikasjonene med tilsvarende argumenter (tall i klammeparenteser).
Se at vi bruker {0} i den første setningen, og det blir erstattet med variabelen navn, som er det første argumentet i format-metoden. På samme måte tilsvarer det andre argumentet {1} variabelen alder.
Her erstatter Python hver argumentverdi på plassen vi har spesifisert. Du kan legge til flere detaljer i spesifikasjonen, som:
>>> '{0:.3}'.format(1/3) # presisjon til tre desimaler for flyttallet '0.333' >>> '{0:_^11}'.format('hello') # fyll med understreker (_) med teksten i midten (^) slik at det hele blir 11 karakterer bredt '___hello___' >>> '{navn} skrev {bok}'.format(navn='Swaroop', bok='A Byte of Python') # nøkkelord-basert 'Swaroop skrev A Byte of Python'
Detaljer om denne metoden blir forklart i Python Enhancement Proposal No. 3101.
[edit] Variabler
Det kan bli kjedelig å bare bruke bokstavelige konstanter - man trenger en måte å lagre informasjon på og endre det på. Her kommer variabler inn i bildet. Variabler har fått navnet sitt fordi verdien deres kan variere. Det vil si at du kan lagre hva du vil ved å bruke en variabel. Variabler er bare deler av datamaskinen din sitt minne der du lagrer noe informasjon. Du må kunne finne dem fram igjen og bruke dem, og derfor gir du dem navn.
[edit] Navngi identifikatorer
Variabler er en type identifikator. Identifikatorer er navn du gir ting for å identifisere dem. Det er noen regler du må følge når du gir dem navn:
- Den første karakteren i identifikatoren må være en bokstav i alfabetet (stor eller liten ASCII-bokstav eller en Unicode-karakter) eller en understrek ('_').
- Resten av navnet kan bestå av bokstaver (store eller små ASCII-bokstaver eller Unicode-karakterer), understreker ('_') og tall (0-9).
- Små og store bokstaver er forskjellige i navnene. For eksempel er ikke mittnavn og mittNavn det samme. Legg merke til den lille n-en i den første og den store N-en i den siste.
- Noen eksempler på gyldige navn på identifikatorer er i, __mitt_navn, navn_23, a1b2_c3 og resumé_count.
- Noen eksempler på ugyldige navn på identifikatorer er 2ting, dette er fjernt og mitt-navn.
- Bemerkning til norske lesere
- ASCII omhandler kun det amerikanske alfabetet. Det vil si at norske bokstaver som æ, ø og å utelukkes.
[edit] Datatyper
Variabler kan inneholde verdier av forskjellige typer, kalt datatyper. Du har sett på de grunnleggende typene, som er tall og strenger. I senere kapitler får du se hvordan man lager egne typer ved å bruke klasser.
[edit] Objekter
Husk på at Python omtaler alt som brukes i et program som et objekt. Dette er ment som et samlebegrep. I stedet for å si 'noentingen' sier vi 'objektet'.
- Bemerkning dersom du bruker objektorientert programmering
- Python er svært objektorientert på den måten at alt er et objekt, inkludert tall, strenger og funksjoner.
Du skal nå få se hvordan man bruker variabler sammen med bokstavelige konstanter. Lagre det følgende eksemplet og kjør programmet.
- Hvordan å skrive Python-programmer
- Herfra skal vi skrive og lagre programmer som følger:
- Åpne favoritteditoren din.
- Skriv programkoden slik som den står i eksemplet.
- Lagre den som en fil med filnavnet som er nevnt i kommentaren. Jeg lagrer alle programmene mine med filendelsen .py.
- Kjør tolkeren med kommandoen python program.py eller bruk IDLE for å kjøre programmene. Du kan også bruke metoden for å lage kjørbare programmer
[edit] Eksempel: Bruke variabler og bokstavelige konstanter
#!/usr/bin/python # Filnavn: var.py i = 5 print(i) i = i + 1 print(i) s = '''Dette er en streng over flere linjer. Dette er den andre linjen.''' print(s)
Output:
$ python var.py 5 6 Dette er en streng over flere linjer. Dette er den andre linjen.
Hvordan det virker:
Først gir vi den bokstavelige konstantverdien 5 til variabelen i ved å bruke operatoren for tildeling (=). Denne linjen kalles en påstand fordi den bestemmer at noe skal gjøres. I dette tilfellet setter vi variabelnavnet i sammen med verdien 5. Etter dette skriver vi verdien ved å bruke print-påstanden, som skriver variabelen på skjermen.
Så legger vi 1 til verdien som er lagret i i og lagrer den igjen. Så skriver vi den og får verdien 6 tilbake.
På samme måte tildeler vi en streng til variabelen s og skriver den.
- Bemerkning dersom du bruker statiske programmeringsspråk
- Variabler blir tatt i bruk med en gang man gir dem en verdi. Du trenger ikke å deklarere noe eller definere noen datatyper.
[edit] Logiske og fysiske linjer
En fysisk linje er det du kan se når du skriver et program. En logisk linje er det Python ser som en påstand. Python antar vanligvis at hver fysiske linje tilsvarer en logisk linje.
Et eksempel på en logisk linje er en påstand, som print('Hello World') - hvis dette var på en linje for seg selv (som du ser den i en editor), tilsvarer den også en fysisk linje.
Du blir oppfordret til å skrive en eneste påstand på hver linje, siden det gjør koden lettere å lese.
Hvis du vil skrive mer enn en logisk linje på en enkel fysisk linje må du gi beskjed om dette med et semikolon (;) som indikerer slutten på en logisk linje eller påstand. For eksempel er
i = 5 print(i)
det samme som
i = 5; print(i);
og det samme kan skrives som
i = 5; print(i);
eller til og med
i = 5; print(i)
Jeg anbefaler på det sterkeste at du holder deg til å bare skrive en logisk linje på hver fysiske linje. Bruk bare mer enn en fysisk linje hvis den logiske linjen er virkelig lang. Tanken er at man skal unngå semikolon så mye som mulig, siden det gjør koden vanskeligere å lese. Faktisk har jeg aldri brukt eller sett et semikolon i et Python-program.
Et eksempel på å skrive en logisk linje over mange fysiske linjer er som følger. Dette omtales som eksplisitt linjesammenslåing.
s = 'Dette er en streng. \ Dette fortsetter strengen.' print(s)
Dette gir output:
Dette er en streng. Dette fortsetter strengen.
På samme måte er
print\ (i)
det samme som
print(i)
Noen ganger er det inneforstått at man ikke trenger å bruke en bakovervendt skråstrek. Dette er i tilfeller der den logiske linjen bruker parenteser, hakeparenteser ([]) eller klammeparenteser ({}). Dette kalles implisitt linjesammenslåing. Du får se dette når vi bruker lister i senere kapitler.
[edit] Innrykk
Mellomrom og tabulatorer på begynnelsen av linjer er viktige. Dette kalles innrykk. Du bruker mellomrom og tabulatorer på begynnelsen av logiske linjer for å bestemme hvilket innrykksnivå de er på; dette deler påstandene opp i grupper.
Det betyr at påstander som hører sammen må ha samme innrykksnivå. Et sett med påstander kalles en blokk. Du får se eksempler på hvorfor blokker er viktige i senere kapitler.
Du bør huske på at galt innrykksnivå kan lage feil i programmet. For eksempel:
i = 5 print('Verdien er ', i) # Feil! Legg merke til mellomrommet på starten av linjen print('Jeg gjentar, verdien er ', i)
Når du kjører denne filen får du følgende feil:
File "whitespace.py", line 4
print('Verdien er ', i) # Feil! Legg merke til mellomrommet på starten av linjen
^
IndentationError: unexpected indent
Legg merke til at det er et mellomrom på begynnelsen av den andre linjen. Feilen som Python gir beskjed om forteller oss at syntaksen i programmet er ugyldig, det vil si at du ikke har skrevet programmet skikkelig. Det du lærer av dette er at du ikke kan lage nye blokker med påstander etter eget ønske (unntatt hovedblokken, som du har brukt hele tiden, selvfølgelig). De tilfellene der du kan bruke nye blokker kommer vi inn på i senere kapitler, som kapitlet om kontrollflyt
- Hvordan lage innrykk
- Ikke bruk en blanding av tabulatorer og mellomrom til innrykkene, siden dette ikke fungerer likt på de forskjellige plattformene. Jeg anbefaler på det sterkeste at du bruker en enkel tabulator eller fire mellomrom til hvert innrykk.
- Velg mellom disse to måtene å lage innrykk på. Det viktige er at du velger en måte og bruker kun den.
- Bemerkning dersom du bruker statiske programmeringsspråk
- Python bruker alltid innrykk til blokker og aldri parenteser. Kjør from __future__ import braces for å lære mer.
[edit] Sammendrag
Nå som vi har gått igjennom mange pirkete detaljer kan vi gå over til mer interessante ting som kontrollflytpåstander. Vær sikker på at du har forstått det du har lært i dette kapitlet
Please add your comments by clicking on the 'Discussion' link in the left sidebar.