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:Operatorer og uttrykk
From Notes
Contents |
[edit] Introduksjon
De fleste påstandene (logiske linjer) du kommer til å skrive vil inneholde uttrykk. Et uttrykk er for eksempel 2 + 3. Du kan dele dem opp i operatorer og operander.
Operatorer er funksjoner som gjør noe og blir representert av symboler (som +) eller spesielle nøkkelord. Operatorer trenger noe data de kan operere med, og dette kalles operander. I dette tilfellet er 2 og 3 operander.
[edit] Operatorer
Vi skal ta en liten titt på operatorene og hvordan du bruker dem.
Legg merke til at du kan evaluere uttrykkene fra eksemplet ved å bruke tolkeren. For eksempel kan du teste uttrykket 2 + 3 ved å bruke tolkekommandolinjen:
>>> 2 + 3 5 >>> 3 * 5 15 >>>
|
Operator |
Navn |
Forklaring |
Eksempler |
|---|---|---|---|
|
+ |
Pluss |
Legger sammen to objekter |
3 + 5 gir 8. 'a' + 'b' gir 'ab'. |
|
- |
Minus |
Gir et negativt tall eller trekker et tall fra et annet |
-5.2 gir et negativt tall. 50 - 24 gir 26. |
|
* |
Multiplisere |
Gir produktet av to tall eller en streng gjentatt et antall ganger. |
2 * 3 gir 6. 'la' * 3 gir 'lalala'. |
|
** |
Potens |
Gir x opphøyd i y |
3 ** 4 gir 81 (det vil si 3 * 3 * 3 * 3) |
|
/ |
Divider |
Dividerer x med y |
4 / 3 gir 1.3333333333333333. |
|
// |
Gulvdivisjon |
Gir resultatet av et delestykke rundet ned til nærmeste hele tall |
4 // 3 gir 1. |
|
% |
Restdivisjon |
Gir resten etter en divisjon |
8 % 3 gir 2. -25.5 % 2.25 gir 1.5. |
|
<< |
Venstreskift |
Flytter bitene i tallet til venstre med antallet biter du har oppgitt (tall skrives som binærtall (0 og 1) i minnet). |
2 << 2 gir 8. 2 skrives som 10 i biter. Å skifte til venstre med 2 biter gir 1000 som står for tallet 8 (i titallssystemet). |
|
>> |
Høyreskift |
Flytter bitene i tallet til høyre med antallet biter du har oppgitt. |
11 >> 1 gir 5. 11 skrives som 1011 som blir til 101 når det flyttes til høyre med en bit, og det blir 5 i titallssystemet. |
|
& |
Bitwise AND |
Bitwise AND for tallene |
5 & 3 gir 1. |
|
| |
Bitwise OR |
Bitwise OR for tallene |
5 | 3 gir 7 |
|
^ |
Bitwise XOR |
Bitwise XOR for tallene |
5 ^ 3 gir 6 |
|
~ |
Bitwise invert |
Bitwise-inversjonen til x er -(x+1) |
~5 gir -6. |
|
< |
Mindre enn |
Forteller om x er mindre enn y. Alle sammenligningsoperatorer gir enten True eller False. Legg merke til at navnene har stor bokstav. |
5 < 3 gir False og 3 < 5 gir True. Sammenligninger kan lenkes sammen: 3 < 5 < 7 gir True. |
|
> |
Større enn |
Forteller om x er større enn y |
5 > 3 gir True. Hvis begge operandene er tall, blir de først konvertert til en felles type. Ellers gir operatoren alltid False. |
|
<= |
Mindre enn eller lik |
Forteller om x er mindre enn eller lik y |
x = 3; y = 6; x <= y gir True. |
|
>= |
Større enn eller lik |
Forteller om x er større enn eller lik y |
x = 4; y = 3; x >= 3 gir True. |
|
== |
Er lik |
Forteller om operandene er like |
x = 2; y = 2; x == y gir True. x = 'str'; y = 'stR'; x == y gir False. x = 'str'; y = 'str'; x == y gir True. |
|
!= |
Er ulik |
Forteller om objektene er ulike |
x = 2; y = 3; x != y gir True. |
|
not |
Booleansk NOT |
Hvis x er True gir den False. Hvis x er False gir den True. |
x = True; not y gir False. |
|
and |
Booleansk AND |
x and y gir False hvis x er False, hvis ikke gir den en evaluering av y |
x = False; y = True; x and y gir False siden x er False. I dette tilfellet vil ikke Python evaluere y siden det at den venstre siden av 'and'-uttrykket er False som bestemmer at hele uttrykket vil være False uavhengig av de andre verdiene. Dette kalles kortslutningsevaluering. |
|
or |
Booleansk OR |
Hvis x er True gir den True hvis ikke gir den en evaluering av y |
x = True; y = False; x or y gir True. Kortslutningsevaluering gjelder også her. |
[edit] Operatorpresedens
Hvis du hadde et uttrykk som 2 + 3 * 4, skal man legge sammen eller multiplisere først? Ungdomsskolematematikken forteller oss at multiplikasjonen skal gjøres først. Dette betyr at multiplikasjonsoperatoren har høyere presedens enn addisjonsoperatoren.
Den følgende tabellen er operatorpresedenstabellen for Python, fra lavest (minst bindende) til den høyest (mest bindende). Dette betyr at i et gitt uttrykk vil Python evaluere operatorene som er lavere i tabellen før operatorene som er høyere i tabellen.
Den følgende tabellen (tatt fra Pythons referansemanual) er her for helhetens skyld. Det er langt bedre å bruke parenteser for å sette sammen operatorer og operander skikkelig for å uttrykkelig spesifisere hva som har presedens. Dette gjør programmet lettere å lese. Se #Evalueringsorden under for detaljer.
|
Operator |
Beskrivelse |
|---|---|
|
lambda |
Lambdauttrykk |
|
or |
Booleansk OR |
|
and |
Booleansk AND |
|
not x |
Booleansk NOT |
|
in, not in |
Medlemskapstester |
|
is, is not |
Identitetstester |
|
<, <=, >, >=, !=, == |
Sammenligninger |
|
| |
Bitwise OR |
|
^ |
Bitwise XOR |
|
& |
Bitwise AND |
|
<<, >> |
Shifts |
|
+, - |
Addisjon og subtraksjon |
|
*, /, //, % |
Multiplikasjon, division, gulvdivisjon and restdivisjon |
|
+x, -x |
Positiv og negativ |
|
~x |
Bitwise NOT |
|
** |
Eksponensiering |
|
x.attribute |
Attributtreferanse |
|
x[index] |
Abonnement |
|
x[index1:index2] |
Slicing |
|
f(arguments ...) |
Funksjonspåkalling |
|
(expressions, ...) |
Binding eller tuple-visning |
|
[expressions, ...] |
Listevisning |
|
{key:datum, ...} |
Oppslagsvisning |
Operatorene som vi ikke allerede har vært borti vil bli forklart i senere kapitler.
Operatorer med samme presedens står på samme rad i tabellen ovenfor. For eksempel har + og - samme presedens.
[edit] Evalueringsorden
Som standard forteller operatorpresedenstabellen hvilke operatorer som evalueres før andre. For å gjøre uttrykket mer lesbart kan du bruke parenteser. For eksempel er det definitivt lettere å forstå 2 + (3 * 4) enn 2 + 3 * 4, siden man trenger kunnskap om operatorpresedens. Som med alt annet burde man bruke parenteser med måte. Ikke overdriv bruken der de er overflødige (som i 2 + (3 + 4)).
Hvis du vil endre rekkefølgen uttrykkene blir evaluert i kan du nok en gang bruke parenteser. For eksempel kan du skrive noe sånt som (2 + 3) * 4 hvis du vil at addisjonen skal evalueres før multiplikasjonen.
[edit] Assosiativitet
Regnerekkefølgen for operatorer med samme presedens er fra venstre til høyre. For eksempel blir 2 + 3 + 4 evaluert som (2 + 3) + 4. Noen operatorer, som tildelingsoperatorer har assosiativitet fra høyre til venste, det vil si at a = b = c behandles som a = (b = c)
[edit] Uttrykk
[edit] Bruke uttrykk
Eksempel:
#!/usr/bin/python # Filnavn: uttrykk.py lengde = 5 bredde = 2 areal = lengde * bredde print('Arealet er', areal) print('Omkretsen er', 2 * (lengde + bredde))
Output:
$ python expression.py Arealet er 10 Omkretsen er 14
Hvordan det virker:
Lengden og bredden til rektanglet lagres i variabler med samme navn. Vi bruker disse for å regne ut arealet og omkretsen til rektanglet ved hjelp av uttrykk. Vi lagrer resultatet til uttrykket lengde * bredde i variabelen areal og skriver det så ved å bruke print-funksjonen. I de andre tilfellet bruker vi verdien til uttrykket 2 * (lengde + bredde) direkte i print-funksjonen.
Legg også merke til hvordan Python 'finskriver' outputen. Selv om vi ikke har skrevet noe mellomrom mellom 'Arealet er' og variabelen areal setter Python det der for os slik at vi får ren og pen output og programmet blir langt lettere å lese (siden vi ikke trenger å bekymre oss for mellomrom i strengene vi bruker til output). Dette er et eksempel på hvordan Python gjør livet lettere for programmereren.
[edit] Sammendrag
Du har sett hvordan du skal bruke operatorer, operander og uttrykk - disse er de grunnleggende byggeklossene til ethvert program. Nå skal vi se på hvordan vi gjør nytte av disse i programmene våre ved å bruke påstander.
Please add your comments by clicking on the 'Discussion' link in the left sidebar.