Python運算符,python入門到精通[五]


運算符用於執行程序代碼運算,會針對一個以上操作數項目來進行運算。例如:2+3,其操作數是2和3,而運算符則是“+”。在計算器語言中運算符大致可以分為5種類型:算術運算符、連接運算符、關系運算符、賦值運算符和邏輯運算符。運算符也是計算機里比較好理解的人類語言之一,只要稍微懂點數學的,都能看懂算數運算符。在Python中常見的運算符有:+、-、*、/、**/<、>、!=、//、%、&、|、^、~、>>、<<、<=、>=、==、not、and、or。在接下來的博文中再一一介紹這些運算符的具體事例。

v寫在前面

python你不去認識它,可能沒什么,一旦你認識了它,你就會愛上它

vpython運算符基礎實例

代碼正文&講解:

# coding=utf-8
#兩個數字相加
sumNumber=1+2
print(sumNumber)      #輸出結果:3

#兩個字符串相加
sumString="Nice work"
print(sumString)      #輸出結果:Nice work

#兩個數字相減
subNumber=2-1
print(subNumber)      #輸出結果:1

#兩個數字相乘或者字符串重復
multiplicationNumber=2*3
print(multiplicationNumber)      #輸出結果:6
multiplicationString="hello"*2
print(multiplicationString)      #輸出結果:hellohello
#/---關於*號重復字符串之前的博客已經介紹過了---/

#兩個數相除
divisionNumber=9/2
print(divisionNumber)      #輸出結果:4
divisionNumber=9.0/2
print(divisionNumber)      #輸出結果:4.5
divisionNumber=9/2.0
print(divisionNumber)      #輸出結果:4.5
#/---除數或被除數中有任意一個是小數的話,商也會保留小數,反之取整---/

#求冪運算
powerNumber=2**3 #相當於2的3次冪,就是2*2*2 關於冪運算大家應該在數學里都很熟悉了
print powerNumber       #輸出結果:8

#小於符號,返回值是bool值
lessThan=1<2
print(lessThan)        #輸出結果:True
lessThan=1<1
print(lessThan)        #輸出結果:False

#大於符號,返回值是bool值
moreThan=2>1
print(moreThan)        #輸出結果:True
moreThan=2>2
print(moreThan)        #輸出結果:False

#不等於符號 返回值是Bool值
notEqual=1!=2
print(notEqual)        #輸出結果:True
notEqual=1!=1
print(notEqual)        #輸出結果:False

#除法運算// 返回商的整數部分,拋棄余數
divisorNumber=10//3
print(divisorNumber)        #輸出結果:3

#除法運算% 返回商的余數部分,拋棄商
divisorNumber=10%3
print(divisorNumber)        #輸出結果:1
divisorNumber=10%1
print(divisorNumber)        #輸出結果:0 /--沒有余數則返回0--/
divisorNumberx=10//3         #divisorNumberx是商的整數部分
divisorNumbery=10%3         #divisorNumbery是余數
divisorNumberz=3*divisorNumberx+divisorNumbery    #divisorNumberz是除數乘以商的整數部分加上余數,得到的divisorNumberz的值就是被除數
print(divisorNumberz)        #輸出結果:10

#按位與運算&, 按位與是指一個數字轉化為二進制,然后這些二進制的數按位來進行與運算
operationNumber=7&18
print operationNumber        #輸出結果:2
'''
這個有點繞,稍微多說下,如果對二進制不是太熟的朋友,可以打開電腦自帶的計算器,按住win+q,輸入"calculator"。
然后在打開的計算器設置成程序員模式, 就是View(查看)->>programmer(程序員).
然后我們將7轉為二進制:111,自動補全8位:00000111,然后將18轉為二進制補全8位后得到:00010010
最后將   00000111
跟       00010010 按位進行與運算,
/-
對與運算不熟的朋友可以看看百度百科的介紹,還是很詳細的。
http://baike.baidu.com/link?url=lfGJREBvGCY5j7VdF2OO9n2mtIbSyNUD7lZyyY74QIetguL5lXIQUxY38Yr-p4z4WdUvHUKGjw9CDfagiun2Ea
-/
得到結果:00000010
我們都知道10二進制→十進制=2,所以7跟18的按位與的結果是二進制10(十進制2)
'''

#按位或運算|, 按位或是指一個數字轉化為二進制,然后這些二進制的數按位來進行或運算
operationNumber=7|18
print operationNumber        #輸出結果:23   #結題思路和按位與運算的一樣,可以參考按位與運算

#按位異或
operationNumber=7^18
print operationNumber        #輸出結果:21   #結題思路和按位與運算的一樣,可以參考按位與運算

#按位翻轉 ~   按位翻轉公式: ~x= - (x+1)
operationNumber=~12  #~12=- (12+1) = -13
print operationNumber        #輸出結果:-13   #結題思路和按位與運算的一樣,可以參考按位與運算

#左移<<
'''
比如18左移就是將他的二進制形式00100100左移,得到00100100(36)。
左移規律:左移一個單位相當於乘2,左移兩個單位相當於乘以4,左移三個單位相當於乘以8,
即:      左移n個單位相當於乘以2的n次冪
'''
operationNumber=12<<1
print operationNumber        #輸出結果:24
operationNumber=3<<3
print operationNumber        #輸出結果:24

#右移>>
'''
理解左移以后,右移就很好理解了。
右移是左移的逆運算,將對應的二進制數向右移動。
右移規律:右移一個單位相當於除以2,右移兩個單位相當於除以4,右移三個單位相當於除以8,
即:      右移n個單位相當於除以2的n次冪
'''
operationNumber=12>>1
print operationNumber        #輸出結果:6
operationNumber=12>>2
print operationNumber        #輸出結果:3

#小於等於<= 比較運算,小於或等於返回一個bool值
operationNumber=3<=3
print operationNumber        #輸出結果:True
operationNumber=3<=2
print operationNumber        #輸出結果:False

#大於等於>= 比較運算,大於或等於返回一個bool值
operationNumber=2>=3
print operationNumber        #輸出結果:False
operationNumber=3>=2
print operationNumber        #輸出結果:True

#比較兩個對象是否相等==
operationNumber=3==2
print operationNumber        #輸出結果:False
operationString="hi"=="hi"
print operationString        #輸出結果:True

#邏輯非 not
operationx=True
operationy=not operationx
print operationy        #輸出結果:False
operationz=False
print not operationz        #輸出結果:True

#邏輯與 and
'''
True and True = True
True and False = False
False and True = False
False and False = False
'''
print True and True        #輸出結果:True

#邏輯或 or
'''
True or True = True
True or False = True
False or True = True
False or False = False
'''
print False or False        #輸出結果:False

這里的這些運算可能按位運算會感覺比較麻煩,不過沒有關系,大家用多了就熟練了。

vpython運算符優先級

1.python運算符優先級排行榜: 

在一個表達式中可能包含多個有不同運算符連接起來的、具有不同數據類型的數據對象;由於表達式有多種運算,不同的運算順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表達式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性、唯一性。

優先級從上到下依次遞減,最上面具有最高的優先級,逗號操作符具有最低的優先級。表達式的結合次序取決於表達式中各種運算符的優先級。優先級高的運算符先結合,優先級低的運算符后結合,同一行中的運算符的優先級相同。

代碼正文&講解:

# coding=utf-8
#優先級的簡單實例
priorityNumber=2+1*4
print priorityNumber      #輸出結果:6


#優先級使用實例
#以下優先級排名從高到低,在同一運算中,先執行優先級高的再執行低的,以此類推。

#Top 1:函數調用、尋址、下標

#Top 2:冪運算**
priorityNumber=2*2**3
print priorityNumber      #輸出結果:16

#Top 3:翻轉運算~

#Top 4:正負號
print 1+2*-3      #輸出結果:-5

#Top 5:*、/、%
print 2+1*2/5      #輸出結果:2

#Top 6:+、-
print 3<<2+1      #輸出結果:24

#Top 7:<<、>>

#Top 8:按位&、^、|

#Top 9:比較運算符
priority=2*3+2<=2+1*7
print priority      #輸出結果:True

#Top 10:邏輯的not and or

#Top 11:lambda表達式

2.python運算符優先級使用規律: 

代碼正文&講解:

#python優先級使用規律
#1、一般情況下是左結合的
#ps:在沒有更高優先級運算符,即只有同級運算符時時從左到右結合
print 1+2+3*5+5      #輸出結果:23

#2、出現賦值的時候一般是右結合
#ps:在有賦值運算符時,是右結合,即先算出1+2的值以后再賦值給priority
priority=1+2
print priority       #輸出結果:23

2.python運算符優先級大招: 

大家可能會覺得Python運算符的優先級不容易記憶,而且有時候還容易混淆。在實際運用中根據業務邏輯可能我們知道要先做什么再做什么,但是卻忘記Python運算符的優先級了,該怎么辦?這里教大家一個殺手鐧,絕對百試不爽。

代碼正文&講解:

#python運算符優先級大招
'''比如說有這個需求:
        去商店買水,買3瓶水,每瓶5塊,再買一個綠箭(假設綠箭3塊),總共多少錢?
   這個簡單的應用非常明顯,需要先用乘法再用加法,如果這里你忘記了乘法和加法的優先級,可以這樣:
'''
print (3*5)+3       #輸出結果:18

#ps: 這只是一個簡單的例子,只是為了告訴大家實際應用中實在不行咱就放大招。有備無患。
vPython表達式

Python表達式基本概念: 

python中,值、變量和運算符共同組成的整體稱為表達式

代碼正文&講解:

#python表達式
#1 字符串表達式
"Hello"

#2 計算表達式
2+3

#3 賦值表達式
first=0

#4 變量表達式
first

#5 值表達式
3

#等等
v博后練習

應上一篇博客Python基本語法[二],python入門到精通[四]園友的意見,給出瀏覽博客后的練習。如果大家有什么有意思的題目也可以拿出來一起搗鼓,或者留作下一篇博客的"博后練習"。

練習:

  • 弄清楚與或非二進制運算
  • 熟記python運算符優先級關系
  • 去商店買水,買3瓶水,每瓶5塊,趕上雙11,商店促銷,現在每瓶降價1.5塊,總共多少錢。(需要用放大招和不放大招兩種方式)
v博客總結

關於python的運算符大家如果有什么疑問或者補充的可以踴躍發言,我們一起探討。

 


作  者:請叫我頭頭哥
出  處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM