一、算術運算符
+
1>求和
2>正號
3>連接兩個字符串
"a" + "b" = "ab"
# ---------------------- "+"的用途 ------------------- a = 10 b = +20 c = a + b print("%d + %d = %d"%(a,b,c)) # 10 + 20 = 30 str1 = "Hello" str2 = "World" str3 = str1 + str2 print(str3) # HelloWorld
-
1>求差
2>負號
# ---------------------- "-"的用途 ------------------- a = 10 b = -20 c = a - b print("c = %d"%c) # c = 30 負負得正
*
1>求乘積
2>重復
# ---------------------- "*"的用途 ------------------- a = 5 b = 6 c = a * b print("c = %d"%c) # c = 30 # 重復將Hello打印3次 print("Hello"*3) # HelloHelloHello
/
1>求商
//
1>取整除
# ---------------------- "/"與"//"的用途 ------------------- print(5/2) # 2.5 print(5//2) # 2 print(5//2.0) # 2.0
**
1>求幾次冪
2的3次冪
python寫法:2 ** 3
# ---------------------- "**"的用途 ------------------- print(2 ** 3) # 8 print(2 ** -1) # 0.5
%
1>取余數
# ---------------------- "%"的用途 ------------------- print(100%3) # 1
二、賦值運算符
1.單獨的賦值
=
PI = 3.14
PI = 3.14 print("PI = %g"%PI) # PI = 3.14 #只能在python里面使用連等 a = 10 b = 20 c = a = b print("a = %d\tb= %d\tc = %d"%(a,b,c)) # a = 20 b= 20 c = 20 # 注意,此類賦值操作,變量a和b是同時進行賦值的 a,b = 10,20 a,b = a+1,a print("a = %d\tb= %d"%(a,b)) # a = 11 b= 10
2.結合的賦值(算術運算符結合)
+=
# ---------------------- "+="的用途 ------------------- a,b = 10,20 a += b # 等價於 a = a + b print("a = %d\tb= %d"%(a,b)) # a = 30 b= 20
-=
# ---------------------- "-="的用途 ------------------- a,b = 10,20 a -= b # 等價於 a = a - b print("a = %d\tb= %d"%(a,b)) # a = -10 b= 20
*=
# ---------------------- "*="的用途 ------------------- a,b = 10,20 a *= b print("a = %d\tb= %d"%(a,b)) # a = 200 b= 20
/=
//=
# ---------------------- "/="與"//="的用途 ------------------- a = 100 a /= 5 print("a = %g"%a) # a = 20
a //= 5
print("a = %g"%a)
# a = 4
**=
# ---------------------- "**="的用途 ------------------- a = 2 a **= 3 print("a = %d"%a) # a = 8
%=
# ---------------------- "%="的用途 ------------------- a = 10 a %= 3 print("a = %d"%a) # a = 1
三、比較運算符
>
<
>=
<=
==
!=
比較結果:
bool值
True /Yes 非0
False /No 0
result = 10 > 9 print(result) # True print("result的數據類型:",type(result)) # result的數據類型: <class 'bool'>
四、邏輯運算符
and
or
not
import random #猜篩子大小游戲,得到[1,6]范圍內的隨機數,包括1,6 rand_num = random.randint(1,6) if 1 <= rand_num and rand_num <= 3: print("小") if 4 <= rand_num and rand_num <= 6: print("大")
案例1:
輸入用戶名跟密碼,輸入都正確的話,給出登陸成功的提示
# 用戶已經注冊好的用戶名和密碼 acc = "2020110157" pwd = "tyy19950225" account = input("請輸入用戶名:") password = input("請輸入密碼:") # 判斷,是否符合成功登陸的條件 if(account == acc and password == pwd): print("登陸成功!") if(account != acc or password != pwd): print("用戶名或者密碼錯誤...")
案例2:
從鍵盤錄入兩個整型數,分別打印兩個值,將兩個數值完成交換,打印交換之后的值
a = int(input("請輸入第一個整型數:")) b = int(input("請輸入第二個整型數:")) print("交換前:a = %d\tb = %d"%(a,b)) # 方案一 temp = a a = b b = temp print("交換后:a = %d\tb = %d"%(a,b)) # 方案二 a = a + b b = a - b a = a - b print("交換后:a = %d\tb = %d"%(a,b)) # 方案三 a,b = b,a # python特有的交換方法,同時執行賦值操作 print("交換后:a = %d\tb = %d"%(a,b))
拓展:
1.同一運算符(is 與 ==)
1> is 比較的是兩個實例對象是不是完全相同,它們是不是同一個對象,占用的內存地址是否相同。
即is比較兩個條件:
1)內容相同。
2)內存中地址相同
2> == 是比較兩個對象的內容是否相等,即兩個對象的“值“”是否相等,不管兩者在內存中的引用地址是否一樣
a = [1,2,3] b = [1,2,3] print("a的id:{0}\ta的類型:{1}".format(id(a),type(a))) # a的id:61465504 a的類型:<class 'list'> print("b的id:{0}\tb的類型:{1}".format(id(b),type(b))) # b的id:60774440 b的類型:<class 'list'> print("a is b:{}".format(a is b)) # a is b:False print("a == b:{}".format(a == b)) # a == b:True
2.使用is注意python對於小整數使用對象池存儲問題
python對小整數在內存中直接創建了一份,不會回收,所有創建的小整數變量直接從對象池中引用他即可。
但是注意Python僅僅對比較小的整數對象進行緩存(范圍為范圍[-5, 256])緩存起來,在這個范圍內的小整數,任意相同的整數都是同一個對象,而並非是所有整數對象。
(pycharm對整數池進行了優化,因此也是同一個對象)
# pycharm對於小整數使用對象池存儲問題,進行了優化 a1 = 100 b1 = 100 print("a1的id:{0}\ta1的類型:{1}".format(id(a1),type(a1))) print("b1的id:{0}\tb1的類型:{1}".format(id(b1),type(b1))) print("a1 is b1:{}".format(a1 is b1)) # True a2 = 10000 b2 = 10000 print("a2的id:{0}\ta2的類型:{1}".format(id(a2),type(a2))) print("b2的id:{0}\tb2的類型:{1}".format(id(b2),type(b2))) print("a2 is b2:{}".format(a2 is b2)) # True 使用pycharm同樣是True,因為做了優化