Python學習筆記Day3 - Python運算符

1. Python 類型轉換
常用數(shù)據類型轉換

2. Python算術運算符
Python算術運算符
  • 2.1加法(+)運算符
    m = 10
    n = 97
    sum1 = m + n
    x = 7.2
    y = 15.3
    sum2 = x + y
    print("sum1=%d, sum2=%.2f" % (sum1, sum2) )  

運行結果: sum1=107, sum2=22.50

拼接字符串

+用于數(shù)字時表示加法,但是當+用于字符串時,它還有拼接字符串(將兩個字符串連接為一個)的作用:

name = "我的個人博客"  
url = "www.linuxleesinloveyy.cn"  
age = `  
info = name + "的網址是" + url + ",它已經" + str(age) + "歲了"  
print(info)  

運行結果:我的個人博客的網址是www.linuxleesinloveyy.cn,它已經1歲了

  • 2.2減法(-)運算符
    n = 45
    m = -n
    x = -83.5
    y = -x
    print(m, ",", y)  

運行結果:-45 , 83.5

求負

-除了可以用作減法運算之外,還可以用作求負運算(正數(shù)變負數(shù),負數(shù)變正數(shù)):

n = 45
n_neg = -n
f = -83.5
f_neg = -f
print(n_neg, ",", f_neg)  

運行結果:-45 , 83.5

  • 乘法(*)運算符
    n = 4 * 25
    f = 34.5 * 2
    print(n, ",", f)

運行結果:100 , 69.0

重復字符串

*除了可以用作乘法運算,還可以用來重復字符串,也即將 n 個同樣的字符串連接起來:

str1 = "hello "
print(str1 * 4)  

運行結果:hello hello hello hello

  • 2.3 / 和 // 除法運算符

Python 支持/和//兩個除法運算符,但它們之間是有區(qū)別的:

  • /表示普通除法,使用它計算出來的結果和數(shù)學中的計算結果相同。
  • //表示整除,只保留結果的整數(shù)部分,舍棄小數(shù)部分;注意是直接丟掉小數(shù)部分,而不是四舍五入。

實例:

#整數(shù)不能除盡
print("23/5 =", 23/5)
print("23//5 =", 23//5)
print("23.0//5 =", 23.0//5)
print("-------------------")
#整數(shù)能除盡
print("25/5 =", 25/5)
print("25//5 =", 25//5)
print("25.0//5 =", 25.0//5)
print("-------------------")
#小數(shù)除法
print("12.4/3.5 =", 12.4/3.5)
print("12.4//3.5 =", 12.4//3.5)  

運行結果:

23/5 = 4.6
23//5 = 4
23.0//5 = 4.0
-------------------
25/5 = 5.0
25//5 = 5
25.0//5 = 5.0
-------------------
12.4/3.5 = 3.542857142857143
12.4//3.5 = 3.0  

從運行結果可以發(fā)現(xiàn):

  1. /的計算結果總是小數(shù),不管是否能除盡,也不管參與運算的是整數(shù)還是小數(shù)。
  2. 當有小數(shù)參與運算時,//結果才是小數(shù),否則就是整數(shù)。
  • 2.4 求余(%)運算符

Python % 運算符用來求得兩個數(shù)相除的余數(shù),包括整數(shù)和小數(shù)。Python 使用第一個數(shù)字除以第二個數(shù)字,得到一個整數(shù)的商,剩下的值就是余數(shù)。對于小數(shù),求余的結果一般也是小數(shù)。

注意: 求余運算的本質是除法運算,所以第二個數(shù)字也不能是 0,否則會導致 ZeroDivisionError 錯誤

Python % 使用示例:

print("-----整數(shù)求余-----")
print("15%6 =", 15%6)
print("-15%6 =", -15%6)
print("15%-6 =", 15%-6)
print("-15%-6 =", -15%-6)
print("-----小數(shù)求余-----")
print("7.7%2.2 =", 7.7%2.2)
print("-7.7%2.2 =", -7.7%2.2)
print("7.7%-2.2 =", 7.7%-2.2)
print("-7.7%-2.2 =", -7.7%-2.2)
print("---整數(shù)和小數(shù)運算---")
print("23.5%6 =", 23.5%6)
print("23%6.5 =", 23%6.5)
print("23.5%-6 =", 23.5%-6)
print("-23%6.5 =", -23%6.5)
print("-23%-6.5 =", -23%-6.5)  

運行結果:

-----整數(shù)求余-----
15%6 = 3
-15%6 = 3
15%-6 = -3
-15%-6 = -3
-----小數(shù)求余-----
7.7%2.2 = 1.0999999999999996
-7.7%2.2 = 1.1000000000000005
7.7%-2.2 = -1.1000000000000005
-7.7%-2.2 = -1.0999999999999996
---整數(shù)和小數(shù)運算---
23.5%6 = 5.5
23%6.5 = 3.5
23.5%-6 = -0.5
-23%6.5 = 3.0
-23%-6.5 = -3.5  

從運行結果可以發(fā)現(xiàn)兩點:

  • 只有當?shù)诙€數(shù)字是負數(shù)時,求余的結果才是負數(shù)。換句話說,求余結果的正負和第一個數(shù)字沒有關系,只由第二個數(shù)字決定
  • %兩邊的數(shù)字都是整數(shù)時,求余的結果也是整數(shù);但是只要有一個數(shù)字是小數(shù),求余的結果就是小數(shù)。
  • 次方(乘方)運算符

Python ** 運算符用來求一個 x 的 y 次方,也即次方(乘方)運算符。

Python ** 運算符示例:

print('----次方運算----')
print('3**4 =', 3**4)
print('2**5 =', 2**5)
print('----開方運算----')
print('81**(1/4) =', 81**(1/4))
print('32**(1/5) =', 32**(1/5))  

運行結果:

----次方運算----
3**4 = 81
2**5 = 32
----開方運算----
81**(1/4) = 3.0
32**(1/5) = 2.0  

3. Python賦值運算符

Python 中最基本的賦值運算符是等號=;結合其它運算符,=還能擴展出更強大的賦值運算符。

  • 基本賦值運算符號
    #將字面量(直接量)賦值給變量
    n1 = 100
    f1 = 47.5
    s1 = "http://c.biancheng.net/python/"
    #將一個變量的值賦給另一個變量
    n2 = n1
    f2 = f1
    #將某些運算的值賦給變量
    sum1 = 25 + 46 
    sum2 = n1 % 6
    s2 = str(1234)  #將數(shù)字轉換成字符串
    s3 = str(100) + "abc"  
  • 賦值運算符擴展

= 還可與其他運算符(包括算術運算符、位運算符和邏輯運算符)相結合,擴展成為功能更加強大的賦值運算符

Python賦值運算符擴展

運算符擴展實例:

n1 = 100
f1 = 25.5
n1 -= 80  #等價于 n1=n1-80
f1 *= n1 - 10 #等價于 f1=f1*( n1 - 10 )
print("n1=%d" % n1)
print("f1=%.2f" % f1)  

運行結果:

n1=20
f1=255.00  

4. 位運算符

Python 位運算符只能用來操作整數(shù)類型,它按照整數(shù)在內存中的二進制形式進行計算

Python位運算符
  • 4.1 & 按位與運算符

按位與運算符&的運算規(guī)則是:只有參與&運算的兩個位都為 1 時,結果才為 1,否則為 0。

第一個Bit位 第二個Bit位 結果
0 0 0
0 1 0
1 0 0
1 1 1

例如,9&5 可以轉換成如下的運算:

  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在內存中的存儲)
& 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在內存中的存儲)
--------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001  (1 在內存中的存儲)  
  • 4.2 | 按位或運算符

按位或運算符|的運算規(guī)則是:兩個二進制位有一個為 1 時,結果就為 1,兩個都為 0 時結果才為 0。

例如,9 | 5 可以轉換成如下的運算:

  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在內存中的存儲)
| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在內存中的存儲)
---------------------------------------------------------------------
  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1101  (13 在內存中的存儲)  

-9 | 5 可以轉換成如下的運算:

  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在內存中的存儲)
| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在內存中的存儲)
----------------------------------------------------------------------
  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在內存中的存儲)  
  • 4.3 ^按位異或運算符

按位異或運算^的運算規(guī)則是:參與運算的兩個二進制位不同時,結果為 1,相同時結果為 0。

9 ^ 5可以轉換成如下的運算:

  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在內存中的存儲)
^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在內存中的存儲)
----------------------------------------------------------------------
  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1100  (12 在內存中的存儲)

-9 ^ 5可以轉換成如下的運算:

  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在內存中的存儲)
^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在內存中的存儲)
----------------------------------------------------------------------
  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0010  (-14 在內存中的存儲)  
  • 4.4 ~按位取反運算符

按位取反運算符~為單目運算符(只有一個操作數(shù)),右結合性,作用是對參與運算的二進制位取反。

~9可以轉換為如下的運算:

~ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在內存中的存儲)
----------------------------------------------------------------------
  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0110  (-10 在內存中的存儲)

~-9可以轉換為如下的運算:

~ 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在內存中的存儲)
----------------------------------------------------------------------
  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1000  (8 在內存中的存儲)  
  • 4.5 <<左移運算符

Python 左移運算符<<用來把操作數(shù)的各個二進制位全部左移若干位,高位丟棄,低位補 0。

9<<3可以轉換為如下的運算:相當于乘以2**3

<< 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在內存中的存儲)
-----------------------------------------------------------------------
   0000 0000 -- 0000 0000 -- 0000 0000 -- 0100 1000  (72 在內存中的存儲)    

(-9)<<3可以轉換為如下的運算:相當于除以2**3

<< 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在內存中的存儲)
------------------------------------------------------------------------
   1111 1111 -- 1111 1111 -- 1111 1111 -- 1011 1000  (-72 在內存中的存儲)  
  • 4.6 >>右移運算符

Python 右移運算符>>用來把操作數(shù)的各個二進制位全部右移若干位,低位丟棄,高位補 0 或 1。
如果數(shù)據的最高位是 0,那么就補 0;如果最高位是 1,那么就補 1。

9>>3 可以轉換為如下的運算:

>> 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在內存中的存儲)
----------------------------------------------------------------------
   0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001  (1 在內存中的存儲)  

(-9)>>3 可以轉換為如下的運算:

>> 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在內存中的存儲)
-----------------------------------------------------------------------
   1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 1110  (-2 在內存中的存儲)  

5. Python比較運算符

比較運算符,也稱關系運算符,用于對常量、變量或表達式的結果進行大小比較。
如果這種比較是成立的,則返回 True(真),反之則返回 False(假)。

Python比較運算符

Python 比較運算符的使用舉例:

print("89是否大于100:", 89 > 100)
print("24*5是否大于等于76:", 24*5 >= 76)
print("86.5是否等于86.5:", 86.5 == 86.5)
print("34是否等于34.0:", 34 == 34.0)
print("False是否小于True:", False < True)
print("True是否等于True:", True < True)  

運行結果:

89是否大于100: False
24*5是否大于等于76: True
86.5是否等于86.5: True
34是否等于34.0: True
False是否小于True: True
True是否等于True: False  

==is 的區(qū)別: == 用來比較兩個變量的值是否相等,而 is 則用來比對兩個變量引用的是否是同一個對象

import time  #引入time模塊
t1 = time.gmtime() # gmtime()用來獲取當前時間
t2 =  time.gmtime()
print(t1 == t2) #輸出True
print(t1 is t2) #輸出False  

運行結果:

True
False  

分析:

time 模塊的 gmtime() 方法用來獲取當前的系統(tǒng)時間,精確到秒級,因為程序運行非???,所以 t1 和 t1 得到的時間是一樣的。== 用來判斷 t1 和 t2 的值是否相等,所以返回 True。

雖然 t1 和 t2 的值相等,但它們是兩個不同的對象(每次調用 gmtime() 都返回不同的對象),所以t1 is t2返回 False。這就好像兩個雙胞胎姐妹,雖然她們的外貌是一樣的,但它們是兩個人。    

如何判斷兩個對象是否相同呢?答案是判斷兩個對象的內存地址。如果內存地址相同,說明兩個對象使用的是同一塊內存,當然就是同一個對象了。


6. Python邏輯運算符
Python邏輯運算符

邏輯運算符實例:

age = int(input("請輸入年齡:"))
height = int(input("請輸入身高:"))
if age>=18 and age<=30 and height >=170 and height <= 185 :
    print("恭喜,你符合報考飛行員的條件")
else:
    print("抱歉,你不符合報考飛行員的條件")  

可能的運行結果:

請輸入年齡:23↙
請輸入身高:178↙
恭喜,你符合報考飛行員的條件  

在 Python 中,and 和 or 不一定會計算右邊表達式的值,有時候只計算左邊表達式的值就能得到最終結果。

另外,and 和 or 運算符會將其中一個表達式的值作為最終結果,而不是將 True 或者 False 作為最終結果。

對于and運算符:

  • 如果左邊表達式的值為假,那么就不用計算右邊表達式的值了,因為不管右邊表達式的值是什么,都不會影響最終結果,最終結果都是假,此時 and 會把左邊表達式的值作為最終結果。
  • 如果左邊表達式的值為真,那么最終值是不能確定的,and 會繼續(xù)計算右邊表達式的值,并將右邊表達式的值作為最終結果。

對于or運算符:

  • 如果左邊表達式的值為真,那么就不用計算右邊表達式的值了,因為不管右邊表達式的值是什么,都不會影響最終結果,最終結果都是真,此時 or 會把左邊表達式的值作為最終結果.
  • 如果左邊表達式的值為假,那么最終值是不能確定的,or 會繼續(xù)計算右邊表達式的值,并將右邊表達式的值作為最終結果。

使用代碼驗證上面的結論:

url = "http://c.biancheng.net/cplus/"
print("----False and xxx-----")
print( False and print(url) )
print("----True and xxx-----")
print( True and print(url) )
print("----False or xxx-----")
print( False or print(url) )
print("----True or xxx-----")
print( True or print(url) )  

運行結果:

----False and xxx-----
False
----True and xxx-----
http://c.biancheng.net/cplus/
None
----False or xxx-----
http://c.biancheng.net/cplus/
None
----True or xxx-----
True  

7. Python 運算符優(yōu)先級
Python運算符優(yōu)先級和結合性

實際編程中,建議使用括號明確運算符執(zhí)行順序,不要過度依賴運算符優(yōu)先級,避免引起不必要的錯誤。

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

相關閱讀更多精彩內容

  • 本章節(jié)主要說明Python的運算符。舉個簡單的例子 **4 + 5 = 9** 。 例子中,**4** 和 **5...
    lmonkey_01閱讀 247評論 0 0
  • 運算符和操作對象是計算機中比較常見的,所有計算都涉及運算符和操作對象。本節(jié)將介紹Python中的運算符和操作對象。...
    瀧汰泱閱讀 942評論 0 0
  • Python運算符主要包括算術、比較、賦值、邏輯、成員、身份運算符等等。 一、算術運算符: 1、加減乘除:+-*/...
    靜靜地就好閱讀 777評論 0 1
  • 魂夢入鄉(xiāng)關,景物似當年。 徑幽花草盛,林深燕雀歡。 樹莓蕊乍現(xiàn),青杏果尚酸。 童戲街巷里,樂不思家還。
    春三月閱讀 2,061評論 65 63
  • 今日感悟——“原來發(fā)展郵惠付業(yè)務并沒有想像中的那么難!” 【10.16】 一早,來到合作的聚誠公司,也是“郵...
    樂因林閱讀 453評論 0 0

友情鏈接更多精彩內容