1. Python 類型轉(zhuǎn)換
2. Python算術(shù)運(yùn)算符
- 2.1加法(+)運(yùn)算符
m = 10
n = 97
sum1 = m + n
x = 7.2
y = 15.3
sum2 = x + y
print("sum1=%d, sum2=%.2f" % (sum1, sum2) )
運(yùn)行結(jié)果: sum1=107, sum2=22.50
拼接字符串
當(dāng)+
用于數(shù)字時(shí)表示加法,但是當(dāng)+
用于字符串時(shí)贴谎,它還有拼接字符串(將兩個(gè)字符串連接為一個(gè))的作用:
name = "我的個(gè)人博客"
url = "www.linuxleesinloveyy.cn"
age = `
info = name + "的網(wǎng)址是" + url + "砰奕,它已經(jīng)" + str(age) + "歲了"
print(info)
運(yùn)行結(jié)果:我的個(gè)人博客的網(wǎng)址是www.linuxleesinloveyy.cn实辑,它已經(jīng)1歲了
- 2.2減法(-)運(yùn)算符
n = 45
m = -n
x = -83.5
y = -x
print(m, ",", y)
運(yùn)行結(jié)果:-45 , 83.5
求負(fù)
-
除了可以用作減法運(yùn)算之外,還可以用作求負(fù)運(yùn)算(正數(shù)變負(fù)數(shù),負(fù)數(shù)變正數(shù)):
n = 45
n_neg = -n
f = -83.5
f_neg = -f
print(n_neg, ",", f_neg)
運(yùn)行結(jié)果:-45 , 83.5
- 乘法(*)運(yùn)算符
n = 4 * 25
f = 34.5 * 2
print(n, ",", f)
運(yùn)行結(jié)果:100 , 69.0
重復(fù)字符串
*
除了可以用作乘法運(yùn)算沛膳,還可以用來重復(fù)字符串扁远,也即將 n 個(gè)同樣的字符串連接起來:
str1 = "hello "
print(str1 * 4)
運(yùn)行結(jié)果:hello hello hello hello
- 2.3 / 和 // 除法運(yùn)算符
Python 支持/和//兩個(gè)除法運(yùn)算符俊鱼,但它們之間是有區(qū)別的:
-
/
表示普通除法,使用它計(jì)算出來的結(jié)果和數(shù)學(xué)中的計(jì)算結(jié)果相同畅买。 -
//
表示整除并闲,只保留結(jié)果的整數(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)
運(yùn)行結(jié)果:
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
從運(yùn)行結(jié)果可以發(fā)現(xiàn):
-
/
的計(jì)算結(jié)果總是小數(shù)湃缎,不管是否能除盡犀填,也不管參與運(yùn)算的是整數(shù)還是小數(shù)。 - 當(dāng)有小數(shù)參與運(yùn)算時(shí)嗓违,
//
結(jié)果才是小數(shù)九巡,否則就是整數(shù)。
- 2.4 求余(%)運(yùn)算符
Python %
運(yùn)算符用來求得兩個(gè)數(shù)相除的余數(shù)蹂季,包括整數(shù)和小數(shù)冕广。Python 使用第一個(gè)數(shù)字除以第二個(gè)數(shù)字,得到一個(gè)整數(shù)的商偿洁,剩下的值就是余數(shù)撒汉。對(duì)于小數(shù),求余的結(jié)果一般也是小數(shù)涕滋。
注意: 求余運(yùn)算的本質(zhì)是除法運(yùn)算睬辐,所以第二個(gè)數(shù)字也不能是 0,否則會(huì)導(dǎo)致 ZeroDivisionError
錯(cuò)誤
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ù)運(yùn)算---")
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)
運(yùn)行結(jié)果:
-----整數(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ù)運(yùn)算---
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
從運(yùn)行結(jié)果可以發(fā)現(xiàn)兩點(diǎn):
- 只有當(dāng)?shù)诙€(gè)數(shù)字是負(fù)數(shù)時(shí)宾肺,求余的結(jié)果才是負(fù)數(shù)溯饵。換句話說,求余結(jié)果的正負(fù)和第一個(gè)數(shù)字沒有關(guān)系锨用,只由第二個(gè)數(shù)字決定
-
%
兩邊的數(shù)字都是整數(shù)時(shí)瓣喊,求余的結(jié)果也是整數(shù);但是只要有一個(gè)數(shù)字是小數(shù)黔酥,求余的結(jié)果就是小數(shù)藻三。
- 次方(乘方)運(yùn)算符
Python **
運(yùn)算符用來求一個(gè) x 的 y 次方洪橘,也即次方(乘方)運(yùn)算符。
Python **
運(yùn)算符示例:
print('----次方運(yùn)算----')
print('3**4 =', 3**4)
print('2**5 =', 2**5)
print('----開方運(yùn)算----')
print('81**(1/4) =', 81**(1/4))
print('32**(1/5) =', 32**(1/5))
運(yùn)行結(jié)果:
----次方運(yùn)算----
3**4 = 81
2**5 = 32
----開方運(yùn)算----
81**(1/4) = 3.0
32**(1/5) = 2.0
3. Python賦值運(yùn)算符
Python 中最基本的賦值運(yùn)算符是等號(hào)=
棵帽;結(jié)合其它運(yùn)算符熄求,=
還能擴(kuò)展出更強(qiáng)大的賦值運(yùn)算符。
- 基本賦值運(yùn)算符號(hào)
#將字面量(直接量)賦值給變量
n1 = 100
f1 = 47.5
s1 = "http://c.biancheng.net/python/"
#將一個(gè)變量的值賦給另一個(gè)變量
n2 = n1
f2 = f1
#將某些運(yùn)算的值賦給變量
sum1 = 25 + 46
sum2 = n1 % 6
s2 = str(1234) #將數(shù)字轉(zhuǎn)換成字符串
s3 = str(100) + "abc"
- 賦值運(yùn)算符擴(kuò)展
=
還可與其他運(yùn)算符(包括算術(shù)運(yùn)算符逗概、位運(yùn)算符和邏輯運(yùn)算符)相結(jié)合弟晚,擴(kuò)展成為功能更加強(qiáng)大的賦值運(yùn)算符
運(yùn)算符擴(kuò)展實(shí)例:
n1 = 100
f1 = 25.5
n1 -= 80 #等價(jià)于 n1=n1-80
f1 *= n1 - 10 #等價(jià)于 f1=f1*( n1 - 10 )
print("n1=%d" % n1)
print("f1=%.2f" % f1)
運(yùn)行結(jié)果:
n1=20
f1=255.00
4. 位運(yùn)算符
Python 位運(yùn)算符只能用來操作整數(shù)類型,它按照整數(shù)在內(nèi)存中的二進(jìn)制形式進(jìn)行計(jì)算
- 4.1 & 按位與運(yùn)算符
按位與運(yùn)算符&的運(yùn)算規(guī)則是:只有參與&運(yùn)算的兩個(gè)位都為 1 時(shí)逾苫,結(jié)果才為 1卿城,否則為 0。
第一個(gè)Bit位 | 第二個(gè)Bit位 | 結(jié)果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
例如铅搓,9&5 可以轉(zhuǎn)換成如下的運(yùn)算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在內(nèi)存中的存儲(chǔ))
& 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在內(nèi)存中的存儲(chǔ))
--------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001 (1 在內(nèi)存中的存儲(chǔ))
- 4.2 | 按位或運(yùn)算符
按位或運(yùn)算符|的運(yùn)算規(guī)則是:兩個(gè)二進(jìn)制位有一個(gè)為 1 時(shí)瑟押,結(jié)果就為 1,兩個(gè)都為 0 時(shí)結(jié)果才為 0星掰。
例如多望,9 | 5 可以轉(zhuǎn)換成如下的運(yùn)算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在內(nèi)存中的存儲(chǔ))
| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在內(nèi)存中的存儲(chǔ))
---------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1101 (13 在內(nèi)存中的存儲(chǔ))
-9 | 5 可以轉(zhuǎn)換成如下的運(yùn)算:
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在內(nèi)存中的存儲(chǔ))
| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在內(nèi)存中的存儲(chǔ))
----------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在內(nèi)存中的存儲(chǔ))
- 4.3 ^按位異或運(yùn)算符
按位異或運(yùn)算^的運(yùn)算規(guī)則是:參與運(yùn)算的兩個(gè)二進(jìn)制位不同時(shí),結(jié)果為 1氢烘,相同時(shí)結(jié)果為 0怀偷。
9 ^ 5可以轉(zhuǎn)換成如下的運(yùn)算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在內(nèi)存中的存儲(chǔ))
^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在內(nèi)存中的存儲(chǔ))
----------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1100 (12 在內(nèi)存中的存儲(chǔ))
-9 ^ 5可以轉(zhuǎn)換成如下的運(yùn)算:
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在內(nèi)存中的存儲(chǔ))
^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在內(nèi)存中的存儲(chǔ))
----------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0010 (-14 在內(nèi)存中的存儲(chǔ))
- 4.4 ~按位取反運(yùn)算符
按位取反運(yùn)算符~為單目運(yùn)算符(只有一個(gè)操作數(shù)),右結(jié)合性播玖,作用是對(duì)參與運(yùn)算的二進(jìn)制位取反椎工。
~9可以轉(zhuǎn)換為如下的運(yùn)算:
~ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在內(nèi)存中的存儲(chǔ))
----------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0110 (-10 在內(nèi)存中的存儲(chǔ))
~-9可以轉(zhuǎn)換為如下的運(yùn)算:
~ 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在內(nèi)存中的存儲(chǔ))
----------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1000 (8 在內(nèi)存中的存儲(chǔ))
- 4.5 <<左移運(yùn)算符
Python 左移運(yùn)算符<<用來把操作數(shù)的各個(gè)二進(jìn)制位全部左移若干位,高位丟棄蜀踏,低位補(bǔ) 0晋渺。
9<<3可以轉(zhuǎn)換為如下的運(yùn)算:相當(dāng)于乘以2**3
<< 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在內(nèi)存中的存儲(chǔ))
-----------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0100 1000 (72 在內(nèi)存中的存儲(chǔ))
(-9)<<3可以轉(zhuǎn)換為如下的運(yùn)算:相當(dāng)于除以2**3
<< 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在內(nèi)存中的存儲(chǔ))
------------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1011 1000 (-72 在內(nèi)存中的存儲(chǔ))
- 4.6 >>右移運(yùn)算符
Python 右移運(yùn)算符>>用來把操作數(shù)的各個(gè)二進(jìn)制位全部右移若干位,低位丟棄脓斩,高位補(bǔ) 0 或 1。
如果數(shù)據(jù)的最高位是 0畴栖,那么就補(bǔ) 0随静;如果最高位是 1,那么就補(bǔ) 1吗讶。
9>>3 可以轉(zhuǎn)換為如下的運(yùn)算:
>> 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在內(nèi)存中的存儲(chǔ))
----------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001 (1 在內(nèi)存中的存儲(chǔ))
(-9)>>3 可以轉(zhuǎn)換為如下的運(yùn)算:
>> 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在內(nèi)存中的存儲(chǔ))
-----------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 1110 (-2 在內(nèi)存中的存儲(chǔ))
5. Python比較運(yùn)算符
比較運(yùn)算符燎猛,也稱關(guān)系運(yùn)算符,用于對(duì)常量照皆、變量或表達(dá)式的結(jié)果進(jìn)行大小比較重绷。
如果這種比較是成立的,則返回 True(真)膜毁,反之則返回 False(假)昭卓。
Python 比較運(yùn)算符的使用舉例:
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)
運(yùn)行結(jié)果:
89是否大于100: False
24*5是否大于等于76: True
86.5是否等于86.5: True
34是否等于34.0: True
False是否小于True: True
True是否等于True: False
==
和 is
的區(qū)別: == 用來比較兩個(gè)變量的值是否相等愤钾,而 is 則用來比對(duì)兩個(gè)變量引用的是否是同一個(gè)對(duì)象
import time #引入time模塊
t1 = time.gmtime() # gmtime()用來獲取當(dāng)前時(shí)間
t2 = time.gmtime()
print(t1 == t2) #輸出True
print(t1 is t2) #輸出False
運(yùn)行結(jié)果:
True
False
分析:
time 模塊的 gmtime() 方法用來獲取當(dāng)前的系統(tǒng)時(shí)間,精確到秒級(jí)候醒,因?yàn)槌绦蜻\(yùn)行非衬馨洌快,所以 t1 和 t1 得到的時(shí)間是一樣的倒淫。== 用來判斷 t1 和 t2 的值是否相等伙菊,所以返回 True。
雖然 t1 和 t2 的值相等敌土,但它們是兩個(gè)不同的對(duì)象(每次調(diào)用 gmtime() 都返回不同的對(duì)象)镜硕,所以t1 is t2返回 False。這就好像兩個(gè)雙胞胎姐妹返干,雖然她們的外貌是一樣的兴枯,但它們是兩個(gè)人。
如何判斷兩個(gè)對(duì)象是否相同呢犬金?答案是判斷兩個(gè)對(duì)象的內(nèi)存地址念恍。如果內(nèi)存地址相同,說明兩個(gè)對(duì)象使用的是同一塊內(nèi)存晚顷,當(dāng)然就是同一個(gè)對(duì)象了峰伙。
6. Python邏輯運(yùn)算符
邏輯運(yùn)算符實(shí)例:
age = int(input("請(qǐng)輸入年齡:"))
height = int(input("請(qǐng)輸入身高:"))
if age>=18 and age<=30 and height >=170 and height <= 185 :
print("恭喜,你符合報(bào)考飛行員的條件")
else:
print("抱歉该默,你不符合報(bào)考飛行員的條件")
可能的運(yùn)行結(jié)果:
請(qǐng)輸入年齡:23↙
請(qǐng)輸入身高:178↙
恭喜瞳氓,你符合報(bào)考飛行員的條件
在 Python 中,and 和 or 不一定會(huì)計(jì)算右邊表達(dá)式的值栓袖,有時(shí)候只計(jì)算左邊表達(dá)式的值就能得到最終結(jié)果匣摘。
另外,and 和 or 運(yùn)算符會(huì)將其中一個(gè)表達(dá)式的值作為最終結(jié)果裹刮,而不是將 True 或者 False 作為最終結(jié)果音榜。
對(duì)于and
運(yùn)算符:
- 如果左邊表達(dá)式的值為假,那么就不用計(jì)算右邊表達(dá)式的值了捧弃,因?yàn)椴还苡疫叡磉_(dá)式的值是什么赠叼,都不會(huì)影響最終結(jié)果,最終結(jié)果都是假违霞,此時(shí) and 會(huì)把左邊表達(dá)式的值作為最終結(jié)果嘴办。
- 如果左邊表達(dá)式的值為真,那么最終值是不能確定的买鸽,and 會(huì)繼續(xù)計(jì)算右邊表達(dá)式的值涧郊,并將右邊表達(dá)式的值作為最終結(jié)果。
對(duì)于or
運(yùn)算符:
- 如果左邊表達(dá)式的值為真眼五,那么就不用計(jì)算右邊表達(dá)式的值了妆艘,因?yàn)椴还苡疫叡磉_(dá)式的值是什么彤灶,都不會(huì)影響最終結(jié)果,最終結(jié)果都是真双仍,此時(shí) or 會(huì)把左邊表達(dá)式的值作為最終結(jié)果.
- 如果左邊表達(dá)式的值為假枢希,那么最終值是不能確定的,or 會(huì)繼續(xù)計(jì)算右邊表達(dá)式的值朱沃,并將右邊表達(dá)式的值作為最終結(jié)果苞轿。
使用代碼驗(yàn)證上面的結(jié)論:
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) )
運(yùn)行結(jié)果:
----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ùn)算符優(yōu)先級(jí)
實(shí)際編程中,建議使用括號(hào)明確運(yùn)算符執(zhí)行順序逗物,不要過度依賴運(yùn)算符優(yōu)先級(jí)搬卒,避免引起不必要的錯(cuò)誤。