① python中常見的運算符有哪些
| 算術運算符 |
+:兩個數相加兩個數相加,或是字元串連接
-:兩個數相減
*:兩個數相乘,或是返回一個重復若干次的字元串
/:兩個數相除,結果為浮點數
%:取模,返回兩個數相除的余數
//:兩個數相除,返回商的整數部分
**:冪運算,返回乘方結果
| 關系運算符 |
==:比較對象是否相等
!=:比較對象是否不相等
>:大於,例如a>b,將比較a與b的大小,a>b返回True,否則返回False
<:小於,例如a<b,將比較a與b的大小,a<b返回true,否則返回false< p="">
>=:大於等於,例如a>=b,將比較a與b的大小,a>=b返回True,否則返回False
<=:小於等於,例如a<=b,將比較a與b的大小,a<=b返回True,否則返回False
| 賦值運算符 |
=:常規賦值運算符,將運算結果賦值給變數
+=:加法賦值運算符,例如 a+=b 等效於 a=a+b
-=:減法賦值運算符,例如 a-=b 等效於 a=a-b
*=:乘法法賦值運算符,例如 a*=b 等效於 a=a*b
/=:除法賦值運算符,例如 a/=b 等效於 a=a/b
//=:取整除賦值運算符,例如 a//=b 等效於 a=a//b
%=:取模賦值運算符,例如 a%=b 等效於 a=a%b
**=:冪運算賦值運算符,例如 a**=b 等效於 a=a*b
| 邏輯運算符 |
and:與運算,如果a 為False,a and b返回False 否則返回y的計算值
or:或運算,如果a非0,返回a的值,否則返回b的值
not:非運算,如果a為True,返回False,如果a為False,返回True
| 成員運算符 |
in:如果在指定的序列中找到值返回True,否則返回False
not in:如果在指定的序列中找到值返回True,否則返回False
| 身份運算符 |
is:判斷兩個標識符是不是引用自一個對象
is not:判斷兩個標識符是不是引用自不同對象
② python基本運算包括
Python 的基本運算有 +(加)-(減)*(乘)/(除)//(整除)%(求余)
Python 運算符的用法非常符合我們日常的習慣,在此不贅述,以下主要舉一些例子加深印象以及列出幾個注意點:
1.Python 在整數和浮點數運算時,自動將整數隱式轉換成浮點數
2.在除法時,將結果作為浮點數保留(至少小數點後1位)
3.冪乘用兩個星號表示
如
2**3
8
2-1
1
4.除後取整運算符//
15//2
7
5.除後取余%
4%3
0.3333333333333333(小數點後最多16位)
6.還可以原地修改運算符
+= -= *= %= /=
x*=3
x=x*3
7.還可以用於修改字元串
8.在Python中 整數是一種不可變類型,創建後值不能改變,不能自增自減如x++
9.值與操作符間可以添加任意多個空格
③ python運算符
1.*,兩個數相乘或返回一個被重復多次的字元串
2.**,冪,如a**b,表示返回a的b次方的數
3.//,取相除的整數部分
== 是否相等
!= 是否不相等
> 是否大於
< 是否小於
>= 是否大於等於
<= 是否小於等於
注意:比較返回的真(True),假(False),首字母是大寫的
(變數1 if(變數1>變數2) else 變數2)
如果if里為真,返回變數1,否則返回變數2
= 賦值
+= a+=b -->a=a+b,從右往左
-= a-=b --> a=a-b,
*= a*=b --> a=a*b
/= a/=b --> a=a/b
%= a%=b --> a=a%b #取余
**= a**=b --> a=a**b#冪數
//=a//=b --> a=a//b #取整
& 位與 都為1,結果1
| 位或 有1為1
^ 異或 不同為1
~ 非 1為0,0為1,(~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。
<< 左移 高丟低補0 左邊為高位,右邊為低位
>> 右移 低丟高補0
#案例:計算20往左移2位,得到結果a,20往右移動2位,得到結果b,然後列印出a,b結果
#然後a&b,得到結果c,列印c的結果.要寫出計算過程
#0001 0100
#0101 0000
a=20<<2
#0001 0100
#0000 0101
b=20>>2
print(a)
print(b)
#0101 0000
#0000 0101
#0000 0000
c=a&b
print(c)
and 邏輯與 有假為假
or 邏輯或 有真為真
not 邏輯非 真變假,假變真
例如:
a=True
b=False
print(a and b)返回false
print(a or b)返回true
print(not a)返回false
in 如果在指定的序列中找到了值,那麼返回True
not in 如果在指定的序列中沒有找到了值,那麼返回True
#案例:判斷'dfsafaqianfengdfasfafd,該字元串中有沒有huawei
mystr='dfsafahuaweidfasfaf'
print('huawei' in mystr)
is 判斷兩個標識符是否引用同一個對象
is not 判斷兩個標識符是否引用不同的對象
#案例:a1=10,b1=2.經過運算,b1+=8,判斷a1和b1是否引用自一個對象
a1=10
b1=2
b1+=8
print(a1,b1)結果為:10 10
print(a1is b1)列印True
運算符優先順序
運算符的優先順序在長表達式的計算中有指導運算步驟作用
④ python語言中,表達式int(-4.3)的值是
結果是-4
對正數是向下取整,對負數是向上取整。
學python的一個缺點就是對數據類型的基礎理解比較少,
你可以用二進制來理解下,舉一個有符號的二進制為例子:
對於無符號的0b000~0b111來說分別有
0b000=0;
0b001=1;
0b010=2;
0b011=3;
0b100=4;
0b101=5;
0b110=6;
0b111=7;
比如uint就是int的無符號形式。
當相同數據為有符號形式時變為:
0b000=0;
0b001=1;
0b010=2;
0b011=3;
0b100=-4;
0b101=-3;
0b110=-2;
0b111=-1;
(參考原碼、反碼、補碼)
所以根據這個規則,對float,double等數字是同理,在floor時將有符號位進行省略,如以下位運算(>>):
0b000>>1=0b000
0b001>>1=0b000
有0->0和1->0
0b010>>1=0b001
0b011>>1=0b001
有2->1和3->1
按照這個丟失精度的方法計算負數呢?
0b111>>1=0b111
0b110>>1=0b111
0b101>>1=0b110
0b100>>1=0b110
可知:
-1->-1與-2->-1
-3->-2與-4->-2
所以對負數的floor會向上取整,因為丟失精度的方法是直接根據小數點截斷的。
⑤ python運算符優先順序
python運算符優先順序如下:
1、冪運算符:冪運算,a**b得到的結果是a的b次方。
2、算數運算符:
/:除法運算符得出的時除法運算的結果,不會對結果取整。例如50/8得到的結果是6.25。
//:取整運算符,得到的時運算結果的整數部分。
%:取余運算符,得到的是運算結果的小數部分。
*:乘法運算符,a*b得到的是a乘以b的結果。
+、-:加減法運算符,得出的就是兩個數相加或相減的結果。
⑥ python中取整
定義:大於或等於 x 的最大整數 math.ceil(x)
向上取整運算為Ceiling,用數學符號⌈⌉表示
定義:小於或等於 x 的最大整數 math.floor(x)
向上取整運算為Floor,用數學符號⌊⌋表示
其實反斜杠 // 也能實現向下取整:
但是在某些情況下 // 和 math.floor(x) 的實現結果又不一樣:
還是因為浮點數在計算機中存儲值並不是0.05而是0.05...125,具體解釋還是看這里吧 為什麼Python中//和math.floor運算結果會不同 。
向0取整:x為負數時向上取整,x為正數時向下取整。
python中可用 int(x) 實現,也可以用 math.modf(x) 返回一個包含小數部分和整數部分的元組。
有人可能會對 math.modf(-2.36) 結果感到好奇,按理說它應該返回 (0.36, 2.00) 才對。這里涉及到了另一個問題,即浮點數在計算機中的表示,在計算機中是無法精確的表示小數的,至少目前的計算機做不到這一點。上例中最後的輸出結果只是 0.36 在計算中的近似表示。
Python和C一樣, 採用IEEE 754規范來存儲浮點數,更詳細解釋,可以參考知乎話題:
為什麼0.1+0.2=0.30000000000000004而1.1+2.2=3.3000000000000003
從官方文檔得知,Python中 round(x) 採用銀行進位法而非傳統的四捨五入。
銀行進位規則:
① 如果保留數最後一位不等於5,則執行四捨五入,例如 round(5.234, 2)=5.23 round(5.236, 2)=5.24
② 如果保留數最後一位等於5,則取決於5的位置和狀態:⑴ 如果5後有數,不論奇偶都要進位,例如 round(5.2354, 2)=5.24 ;⑵ 如果5後沒有數,則需要看5的前一位奇偶性,奇進偶舍,例如 round(5.235, 2)=5.24 , round(5.225, 2)=5.22
但是!注意!:
內心中一片烏鴉飛過,說好的奇進偶舍呢???其實我內心也是奔潰的,繼續找答案:
我們都知道,計算機所存儲的浮點數並不是表面這么簡單,他並不是一個精確值,可以用decimal模塊的Decimal對象,將float數據映射為底層的更精確的表示。:
round還是那個round,過錯就在於float對象「眼見而非實」上,那到底如何實現真正意義四捨五入呢??
decimal模塊是Python的一個標准庫,是專門為十進制小數的精確計算而設計的,使用decimal模塊的介面,可以實現小數精確的四捨五入,具體不多做展開了,可以參考官方文檔...暫時我也用不到decimal
一路寫下來,結論就是float心機好深,操作真的要小心點...
⑦ 在python中運算符/與//、%的區別
在python中運算符/與//、%的區別:含義不同,計算不同。
含義不同:" / " 表示浮點數除法,返回浮點結果;" // " 表示整數除法,返回不大於結果的一個最大的整數。
計算不同:浮點數與整數相除:假設x除以y,x可能是整數,也可能是浮點數;y可能是整數,也可能是浮點數。不管是除數還是被除數,只要是一個數是浮點數,結果就是浮點數。
含義
在Python中/表示浮點整除法,返回浮點結果,也就是結果為浮點數;而//在Python中表示整數除法,返回大於結果的一個最大的整數,意思就是除法結果向下取整。Python的表達式寫法與C/C++類似。只是在某些寫法有所差別。主要的算術運算符與C/C++類似。 +,-,*,/,//,**,~,%分別表示加法或者取正、減法或者取負、乘法、除法、整除、乘方、取補、取余。>>,<<表示右移和左移。
⑧ python中四捨五入函數取整為什麼要加減0.5
是利用原來的向下取整的機制如果原來是<0.5的,那加上0.5還是沒進位。
實際上Python的round()函數可以接受兩個參數round(value,ndigits),第一個參數為實際操作數,第二個參數為實際保留幾位,如果第二個參數不填,則默認保留到整數位。
Python3.X對於浮點數默認的是提供17位數字的精度。
⑨ Python中將一個三位數字用取余或者取整的方式把三位數字拆成三個分別的數字怎麼做
from string import digits
'''(Tab)處縮進代碼 ,復制代碼→粘貼代碼→查找"(Tab)"替換(按四下space鍵或者Tab鍵),替換所有,即可獲取為原代碼保存。'''
def sws(num):
(Tab)if len(num)!=3:
(Tab)(Tab)return False
(Tab)else:
(Tab)(Tab)if num[0] in digits and num[1] in digits and num[2] in digits:
(Tab)(Tab)(Tab)numbers=int(num)
(Tab)(Tab)(Tab)a=numbers//100
(Tab)(Tab)(Tab)b=(numbers-100*a)//10
(Tab)(Tab)(Tab)c=numbers-100*a-10*b
(Tab)(Tab)(Tab)return(a,b,c)
(Tab)(Tab)else:
(Tab)(Tab)(Tab)return False
if __name__ == "__main__":
(Tab)num=input("輸入三位數:")
(Tab)print(sws(num))
'''運行效果
輸入三位數:123
(1, 2, 3)
'''
⑩ Python幾種取整的方法
向下取整
int(3.75)
四捨五入
round(3.75)
向上取整
math.ceil(3.75)
分離整數和小數
math.modf(3.75)