運算符
定義:有特殊計算規則的符號> 操作數: 參與運算的數據
> 運算符: n元運算符,取決於操作數的數量
> 表達式: 操作數和運算符的結合
一、 算數運算符
+ - * / //、 **、 %、//(地板除)
% (取模) --- <被除數 - 商(向下取整)*除數>,在負數是和取餘不同
# 取模運算符號和除數相同
**(乘冪)
import math
math.fmod() --- 取餘(結果爲浮點類型,結果符號和被除數相同)
eg.
# 地板除
(-10//3) --- -4
(10//3) --- 3
(10%3) --- 1
(-10%3) --- 2
# 取餘 - 看被除數
math.fmod(-10, -3) --- -1.0
math.fmod(-10, 3) --- -1.0
math.fmod(10, -3) --- 1.0
# 取模 - 看除數
-10%-3 --- -1
10%-3 --- -1
-10% 3 --- 1
####專題,取整方向
二、比較運算符(關係運算符)
1. 常見比較符
> 主要有:== > < >= <= !=> 返回值爲布爾類型
> == 用於判斷內容是否相等,對象不一定相等
數值、字符串、字節、元組一般是同一對象
2. 鏈式比較
(支持短路比較、可以不同向)
1>3>'a' --- 此處前面部分返回False,後面不在比較1<3>7
三、 身份比較符
> is / is not> 可以使用id()查看對象內存地址
> 數值、字符串、字節、元組,相同內容使用同一對象
列表、字典、集合,同一內容也創建不同對象
四、 邏輯運算符
> 與and 、或or、 非 not> 返回值可能是布爾類型,可能是計算值
1. 運算符兩側都是布爾表達式
2. 運算符兩側是其他類型
> 返回兩個表達式中的一個
> and如果第一個表達式是True,那麼返回第二個表達式;
否則返回第一個表達式;
> or 如果第一個表達式是True,那麼返回第一個表達式;
否則返回第二個表達式;
# 返回表達式示例
print(3 and 'abc') --- 'abc'
print(0 or 'abc') --- 'abc'
3. 短路現象
> 如果and表達式第一個爲False,或者or第一個表達式爲True,不執行第二個表達式
> and 優先級高於 or
#後面表達式是None,整體打印None
print(True and print('Pitfall'))
# 證明優先級
print( 1 or 1 and 0)
print((1 or 1) and 0)
print( 1 or(1 and 0), end= '\n-------------------------\n')
# 證明短路
print( 0 and print('我被沒有被短路'))
print( 1 or print('我被沒有被短路'))
五、 位運算符
返回值:十進制數1. 原碼,反碼,補碼
> n位機可以儲存到的最大數:2**(n-1)-1> 正數:原碼、反碼、補碼都是二進制碼
負數:原碼 --- 二進制碼,最高位取1
反碼 --- 除符號位,其餘取反
補碼 --- 反碼+1
> 計算機以補碼存儲數據,所有的運算都使用補碼
> 補碼轉原碼:取反加一(取反和+1不分先後)
> 原碼的顯示 --- 和-1與運算
> 補碼的顯示 --- 和0b11111111與運算
2. 位運算符
# 手工計算時,取反、異或結果可以使用計算機,估計使用幾位機(1) & 按位與 如果都是1返回1,否則返回0;
(2) | 按位或 如果存在1返回1,否則返回0;
(3) ^ 按位異或 不同爲1,相同爲0;
(4) ~ 按位取反 包括符號全部取反
(5) << 左位移 右側用0填充,左側如果溢出會影響結果
不溢出的前提下相當於該數值乘以2 --- 計算機不會溢出的
(6) >> 右位移 符號位正數填充0,負數填充1,最右側刪除
如果能整除,除以二;不能整除則向下取整(//)
# 1. 手工計算-27的二進制原碼、反碼,補碼。使用程序輸出-27的二進制碼,想辦法輸出補碼的顯示。驗證是否正確
def que1():
# 手工計算
print('''
十進制: -27 -10
原碼: 10011011 10001010
補碼: 11100101 11110110
''')
# 驗證
num = int(input('請輸入一個整數:'))
print('{}的補碼是{}'.format(num, bin(num&0b11111111)))
print('{}的原碼是{}'.format(num, bin(num & -1)))
# que1()
運行結果:
十進制: -27 -10
原碼: 10011011 10001010
補碼: 11100101 11110110
請輸入一個整數:-27
-27的補碼是0b11100101
-27的原碼是-0b11011
六、賦值運算符
= 、+=(+可以用-,*,/等替代)七、成員運算符
in 、not in
八、運算符優先級
1. 算數運算符 > 比較運算符 > 邏輯運算符 > 賦值運算符2. ()可以調節優先級
3. 比較運算符中,and優先級高於or