02python開發之基本運算子
阿新 • • 發佈:2020-11-24
02 python開發之基本運算子
目錄2 基本運算子
2.1 算數運算子
2.1.1 種類
運算子 | 作用 | 運算子 | 作用 | 運算子 | 作用 | 運算子 | 作用 |
---|---|---|---|---|---|---|---|
+ | 相加 | - | 相減 | * | 相乘 | ** | 冪 |
/ | 相除 | % | 取模/餘數 | // | 取整除/整數部分 |
2.1.2 用法
print(10 + 3) # 輸出:13
print(10 - 3) # 輸出:7
print(10 * 3) # 輸出:30
print(10 / 3) # 輸出:3.3333333333333335
print(10 ** 3) # 次方 輸出:1000
print(10 % 3) # 取餘 輸出:1
print(10 // 3) # 地板除——保留整數 輸出:3
- 字串與字串、列表與列表、字典與字典之間也可使用+和*
print([1, 2, 3] + [3, 4, 5]) # [1, 2, 3, 3, 4, 5] print([1, 2, 3] * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
2.2 比較運算子
2.2.1 種類
運算子 | 作用 | 運算子 | 作用 | 運算子 | 作用 |
---|---|---|---|---|---|
== | 比較是否相等 | != | 比較是否不相等 | > | 是否大於 |
< | 是否小於(1真0假) | >= | 是否大於等於 | <= | 是否小於等於 |
2.2.2 用法
x = 20
y = 23
print(x == y) # ==是否相等,輸出False
print(x != y) # !=是否不相等,輸出True
- 同類型之間可以相互比較,不同型別比較會報錯
x=22 b="123" print(x > b) # 報錯:TypeError: '>' not supported between instances of 'int' and 'str' # 字串跟整型數值進行比較,型別不匹配導致報錯
- str根據ASCⅡ碼錶進行比較,列表按照索引進行比較
print("abc" > "az") # 輸出:False
print([1,2,3] < [1,3,4]) # 輸出:True
2.3 賦值運算子
2.3.1 增量賦值
運算子 | 作用 | 運算子 | 作用 | 運算子 | 作用 | 運算子 | 作用 |
---|---|---|---|---|---|---|---|
= | 賦值運算子 | += | 加法賦值 | -= | 減法賦值 | *= | 乘法賦值 |
/= | 除法賦值 | %= | 取模賦值 | **= | 冪賦值 | //= | 取整除賦值 |
- 用法
age=10
age +=2 # age = age + 2
age -=2 # age = age - 2
age **=2 # age = age * age
age *=2 # age = age * 2
age /=2 # age = age / 2
2.3.2 鏈式賦值
# 方法一
x=10
y=x
z=y # 麻煩
# 方法二
x=y=z=10
print(id(x))
print(id(y))
print(id(z))
2.3.3 交叉賦值
x=10
y=20
# 第一種
temp=x # 把x再賦值一次給一個變數名
x=y
y=temp
# 第二種
x,y=y,x
print(x,y)
2.3.4 解壓賦值
# 麻煩的方式
salary = [1.1, 2.2, 3.3, 4.4, 5.5]
mon1 = salary[0]
mon2 = salary[1]
mon3 = salary[2]
mon4 = salary[3]
mon5 = salary[4]
mon1, mon2, mon3, mon4, mon5 = salary
print(mon1, mon2, mon3, mon4, mon5)
# 變數名多一個不行少一個也不行,必須與值一一對應
# mon1, mon2, mon3, mon4, mon5, mon6 = salary
# mon1, mon2, mon3, mon4 = salary
# 報錯:ValueError: not enough values to unpack(expected 6, got 5)
# 期望有5個返回值,但函式有6返回值
# 優化方案
salary = [1.1, 2.2, 3.3, 4.4]
month1, month2, *_ = salary
print(month1, month2) # 得到1.1 2.2
print(_) # 得到[3.3, 4.4]
dic = {'k1': 111, 'k2': 222, 'k3': 333}
x, *_ = dic
print(x) # 得到k1
2.4邏輯運算子
2.4.1 種類
運算子 | 作用 |
---|---|
not | 布林"非",若x為True,則返回False |
and | 布林"與",若x為False,x and y返回False,否則返回y的計算值 |
or | 布林"或",若x為True,則返回True,否則返回y的計算值 |
2.4.2 優先順序
# not > and > or
res = 3 > 4 and 4 > 3 or not 1 == 3 and 'x' == 'x' or 3 > 3
print(res) # True
2.4.3 用法
# not代表把緊跟其後的條件結果取反
print(10 > 3) # True
print(not 10 > 3) # False
# and連線左右兩個條件,左右兩個條件必須同時成立,最終結果才為True
print(True and 1 > 0 and "aaa" == "aaa") # True
print(False and 1 < 0 and "aaa" != "aaa") # False
# or連線左右兩個條件,左右兩個條件但凡有一個成立,最終結果都為True
print(True or 1 > 0 or "aaa" == "aaa") # True
print(False or 1 > 0 or "aaa" != "aaa") # True
# 短路運算
print(10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4) # abc
print((10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4) # abc
2.4.4 補充
# 對於and運算子,兩邊的值都為真時最終結果才為真,但是隻要其中有一個值為假,那麼最終結果就是假:
# 如果左邊表示式的值為假,不管右邊表示式的值是什麼最終結果都是假,此時and會把左邊表示式的值作為最終結果。
# 如果左邊表示式的值為真,那麼最終值是不能確定的,and會繼續計算右邊表示式的值,並將右邊表示式的值作為最終結果。
# 對於or運算子,情況是類似的,兩邊的值都為假時最終結果才為假,只要其中有一個值為真,那麼最終結果就是真:
# 如果左邊表示式的值為真,不管右邊表示式的值是什麼最終結果都是真,此時or會把左邊表示式的值作為最終結果。
# 如果左邊表示式的值為假,那麼最終值是不能確定的,or會繼續計算右邊表示式的值,並將右邊表示式的值作為最終結果。
print(1 and 3) # 得3
print(1 and 3 or 4) # 得3
print(0 and 2 or 1 or 4) # 得到1
print(0 or False and 1) # 得到False
2.5 身份運算
2.5.1 is
- is 比較的是id
2.5.2 ==
- == 比較的是值
2.5.3 總結
- is 相等值一定相等
- == 相等id不一定相等