Python編程學(xué)習(xí)第十課之Python運(yùn)算符和操作對(duì)象

Python中還有一種常見的操作就是運(yùn)算符和操作對(duì)象,運(yùn)算符是特殊符號(hào)的集合,之前我們數(shù)學(xué)中學(xué)習(xí)過的的加(+)、減(-)、乘(*)、除(/)等都屬于運(yùn)算符,而被運(yùn)算符連接起來的就被稱為操作對(duì)象。

? ? ? ?Python目前支持7種運(yùn)算符,包括:算術(shù)運(yùn)算符、比較(關(guān)系)運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、成員運(yùn)算符和身份運(yùn)算符。

Python作為一門不斷發(fā)展與普及的語言,還在不斷更新中。在學(xué)習(xí)時(shí),建議找一些學(xué)習(xí)伙伴一起來學(xué)習(xí)和討論,效果更佳。如果想學(xué)習(xí)Python,歡迎加入Python學(xué)習(xí)交流群(1104627612),一起督促,一起學(xué)習(xí)。

? 1.算術(shù)運(yùn)算符

? ? ? ? ?定義變量a = 9? b = 5,下方的操作結(jié)果為:

運(yùn)算符描述實(shí)例

+加:兩個(gè)對(duì)象相加a+b,輸出結(jié)果為:14

-減:得到負(fù)數(shù)或一個(gè)數(shù)減去另一個(gè)數(shù)a-b,輸出結(jié)果為:4

*乘:兩個(gè)數(shù)相乘或返回一個(gè)被重復(fù)若干次的字符串a(chǎn)*b,輸出結(jié)果為:45

/除:a除以ba/b,輸出結(jié)果為:1.8

%取模:返回除法的余數(shù)a%b,輸出結(jié)果為:4

**冪:返回a的b次冪a**b是9的5次方,輸出結(jié)果為:59049

//取整除(地板除):返回商的整數(shù)部分a//b,輸出結(jié)果為:1

? ? ? ?操作結(jié)果截圖如下:

補(bǔ)充點(diǎn):

? ? ? ?電腦的操作系統(tǒng)支持內(nèi)存字節(jié)數(shù)有32位和64位的區(qū)分,而現(xiàn)在絕大多數(shù)電腦都使用支持64位的操作系統(tǒng)。支持32位的系統(tǒng),最大支持內(nèi)存的字節(jié)數(shù)就是2的32次冪,即2**32;同理64位的系統(tǒng),最大支持內(nèi)存的字節(jié)數(shù)就是2的64次冪。我們使用轉(zhuǎn)換來看下各自的支持內(nèi)存有多大。我們知道流量的基本轉(zhuǎn)化規(guī)律:1KB = 1024B;1MB = 1024KB;1GB = 1024MB。

? ? ? ?那么2**32個(gè)字節(jié)換算成GB應(yīng)該是2**32/1024/1024/1024=2**2=4GB,即32位系統(tǒng)最大支持內(nèi)存的字節(jié)數(shù)是4GB,現(xiàn)在一般手機(jī)內(nèi)存都比一臺(tái)32位的電腦高,所以現(xiàn)在電腦出廠都支持64位的系統(tǒng)。那么64位的系統(tǒng)最大支持內(nèi)存的字節(jié)數(shù)是多少呢?大家可以自行練習(xí)一下。


? 2.比較運(yùn)算符

? ? ?定義變量a = 10 b = 20,下方的操作結(jié)果為:

運(yùn)算符描述實(shí)例

==等于:比較對(duì)象是否相等(a==b)返回結(jié)果為False

!=不等于:比較兩個(gè)對(duì)象是否不相等(a!=b)返回結(jié)果為True

>大于:返回a是否大于b(a>b)返回結(jié)果為False

<小于:返回a是否小于b。(a<b)返回結(jié)果為True

>=大于等于:返回a是否大于等于b(a>=b)返回結(jié)果為False

<=小于等于:返回a是否小于等于b(a<=b)返回結(jié)果為True

??? 操作結(jié)果截圖如下:?

? ? ? ?PS:在部分需要標(biāo)注True和False的地方,為了記錄方便,會(huì)選擇1來代表True,0代表False,這種處理方式也屬于合理的表達(dá)方式。


? 3.賦值運(yùn)算符

? ? ? 定義變量a = 5 b = 10,下方的操作結(jié)果為:

運(yùn)算符描述實(shí)例

=簡單的賦值運(yùn)算符c=a+b,將a+b的運(yùn)算結(jié)果賦值給c

+=加法賦值運(yùn)算符c+=a,等效于c=c+a

-=減法賦值運(yùn)算符c-=a,等效于c=c-a

*=乘法賦值運(yùn)算符C*=a,等效于c=c*a

/=除法賦值運(yùn)算符c/=a,等效于c=c/a

%=取模賦值運(yùn)算符c%=a,等效于c=c%a

**=冪賦值運(yùn)算符c**=a,等效于c=c**a

//=取整(地板)除賦值運(yùn)算符c//=a,等效于c=c//a

? ?操作結(jié)果截圖如下:

? ? ? ?關(guān)于除法賦值運(yùn)算符,即便兩個(gè)變量是整型,計(jì)算出來的結(jié)果也是浮點(diǎn)數(shù)類型,這是Python解釋器里面的內(nèi)置方法決定的。如果需要計(jì)算結(jié)果為整型,可以使用地板除。


?? 4.位運(yùn)算符

? ? ? ?定義變量a = 60 b = 13,操作結(jié)果如下方所示:

運(yùn)算符描述實(shí)例

&按位與運(yùn)算符:若參與運(yùn)算的兩個(gè)值的兩個(gè)相應(yīng)位都為1,則該位的結(jié)果為1;否則為0(a&b)輸出結(jié)果為12,二進(jìn)制解釋:0000 1100

|按位或運(yùn)算符:只要對(duì)應(yīng)的兩個(gè)二進(jìn)制位有一個(gè)位1,結(jié)果位就為1(a|b)輸出結(jié)果61,二進(jìn)制解釋:0011 1101

^按位異或運(yùn)算符:當(dāng)兩個(gè)對(duì)應(yīng)的二進(jìn)制位相異時(shí),結(jié)果為1(a^b)輸出結(jié)果為49,二進(jìn)制解釋:0011 0001

~按位取反運(yùn)算符:對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)?(~a)輸出結(jié)果為-61,

二進(jìn)制解釋:1100 0011

<<左移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各個(gè)二進(jìn)制位全部左移若干位,由<<右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0a << 2輸出結(jié)果240,二進(jìn)制解釋:1111 0000

>>右移動(dòng)運(yùn)算符:把>>左邊運(yùn)算數(shù)的各個(gè)二進(jìn)制位全部右移若干位,>>右邊的運(yùn)算數(shù)指定移動(dòng)的位數(shù)a >> 2輸出結(jié)果15,二進(jìn)制解釋:0000 1111

? ? 操作結(jié)果截圖如下:

? ? ? ?按位取反運(yùn)算符操作,按位取反的操作流程是對(duì)數(shù)字先進(jìn)行二進(jìn)制顯示,然后按位取反(即每一位數(shù)的0變成1,1變成0)獲得新的碼數(shù)。再將新碼數(shù)取反碼,過程中符號(hào)位(即第一位數(shù)字)除外。獲得的反碼再在末位加一,即可獲得按位取反的值。舉例如下:

? ? ? ?取a = 13的按位取反值:

? ? ? ?第一步,13的二進(jìn)制顯示為:0000 1101

? ? ? ?第二步,按位取反獲得結(jié)果為:1111 0010

? ? ? ?第三步,取反碼結(jié)果為:1000 1101(此處第一位是符號(hào)位,不要變化)

? ? ? ?第四步,末位加一結(jié)果為:1000 1110(如果末尾為1的話,加一的結(jié)果是末尾位變?yōu)?,向前一位進(jìn)1,以此類推即可)。

? ? ? ?第五步,因?yàn)槭孜皇?,所以是負(fù)數(shù);剩余位數(shù)計(jì)算二進(jìn)制即可。1000 1110除首位外,計(jì)算二進(jìn)制為:1*2**3+1*2**2+1*2**1=14,加上負(fù)號(hào)后結(jié)果為-14。

? ? ? ?也可以記憶一個(gè)比較簡單的公式即~a = -(a+1)該公式適用于正數(shù)和負(fù)數(shù)。


Python作為一門不斷發(fā)展與普及的語言,還在不斷更新中。在學(xué)習(xí)時(shí),建議找一些學(xué)習(xí)伙伴一起來學(xué)習(xí)和討論,效果更佳。如果想學(xué)習(xí)Python,歡迎加入Python學(xué)習(xí)交流群(1104627612),一起督促,一起學(xué)習(xí)。


? ?5.邏輯運(yùn)算符

? ? ? ?定義變量a = 10 b = 20,操作結(jié)果如下方所示:

運(yùn)算符邏輯表達(dá)式描述實(shí)例

anda and b布爾“與”:如果a為False,a and b就返回False;否則就返回b的計(jì)算值(a and b)返回20

ora or b布爾“或”:如果a為非0,a or b就返回a的值;否則返回b的計(jì)算值(a or b)返回10

notnot a布爾“非”:如果a為True,not a就返回False;如果a為False,not a就返回TrueNot(a and b)返回False


? ?操作結(jié)果截圖如下:

? ? ?and運(yùn)算符操作的運(yùn)算步驟為:

? ? ? ? and是在布爾上下文中從左到右計(jì)算表達(dá)式的值;

? ? ? ? 0、’’、[]、()、{}、None、False在布爾上下文中為假;其它任何東西都為真;

? ? ? ? 如果布爾上下文中的某個(gè)值為假,則返回第一個(gè)假值;

? ? ? ? 所有值都為真,則返回最后一個(gè)真值。

? ? ? or運(yùn)算符操作

? ? ? ? 如果表達(dá)式中存在真值,則返回第一個(gè)真值

? ? ? ? 所有值都為假返回最后一個(gè)假值


? 6.成員運(yùn)算符

????? 定義變量a = 5 b = [2,5,9,8,15,20,7]

運(yùn)算符描述實(shí)例

in如果在指定的序列中找到值,就返回True;否則返回False如果a在b序列中,就返回True。

not in如果在指定的序列中沒有找到值,就返回True;否則就返回False如果a不在序列中,就返回True

? ? ?操作結(jié)果截圖如下:

?7.身份運(yùn)算符

????? 定義變量a = 10 b = 10

運(yùn)算符描述實(shí)例

isis判斷兩個(gè)標(biāo)識(shí)符是否引用自一個(gè)對(duì)象a is b,,如果id(a)等于id(b),(a is b)結(jié)果為True

is notis not用于判斷兩個(gè)標(biāo)識(shí)符是否引用自不同對(duì)象a is not b,,如果id(a)不等于id(b),(a is not b)結(jié)果為True

? ?操作結(jié)果截圖如下:

? ?8.運(yùn)算符優(yōu)先級(jí)

運(yùn)算符描述

**指數(shù)(最高優(yōu)先級(jí))

~ + -按位翻轉(zhuǎn),一元加號(hào)和減號(hào)(最后兩個(gè)的方法名為+@和-@)

* / % //乘、除、取模和取整除

+ -加法、減法

>> <<右移左移運(yùn)算符

&位運(yùn)算符 AND

^ |位運(yùn)算符

<= < > >=比較運(yùn)算符

== !=等于不等于運(yùn)算符

= %= /= //= -= += *= **=賦值運(yùn)算符

is is not身份運(yùn)算符

in not in成員運(yùn)算符

not or and邏輯運(yùn)算符

? ? ? ?運(yùn)算符優(yōu)先級(jí)遵循PEMDAS規(guī)則,括號(hào)(Parentheses,P)擁有最高優(yōu)先級(jí),其次是乘方(Exponentiation,E),再往后的優(yōu)先級(jí)是乘法(Multiplication,M)和除法(Division,D),再次級(jí)是加法(Addition,A)和減法(Subtraction,S)。如果優(yōu)先級(jí)相同的話,操作順序按照從左向右求值即可。

Python作為一門不斷發(fā)展與普及的語言,還在不斷更新中。在學(xué)習(xí)時(shí),建議找一些學(xué)習(xí)伙伴一起來學(xué)習(xí)和討論,效果更佳。如果想學(xué)習(xí)Python,歡迎加入Python學(xué)習(xí)交流群(1104627612),一起督促,一起學(xué)習(xí)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容