邏輯和運(yùn)算是程序重要組成部分柱告,我們先來(lái)認(rèn)識(shí)Python中的運(yùn)算符:
1:算數(shù)運(yùn)算符
2:比較運(yùn)算符
3:邏輯運(yùn)算符
1. 算數(shù)運(yùn)算符:
運(yùn)算符 | 描述 |
---|---|
+, -, *, / | 加減乘除 |
% | 求余 |
** | 冪運(yùn)算 |
// | 地板除只保留商 |
具體使用如下:
>>> x =10
>>> y = 20
>>> x + y
30
>>> x * y
200
>>> x / y
0.5 #計(jì)算結(jié)果:浮點(diǎn)
>>> y / x
2.0
>>> x ** 2 #冪運(yùn)算
100
>>> x // y
0 #計(jì)算結(jié)果:只取整數(shù)部分
>>> y // x
2 #計(jì)算結(jié)果:只取整數(shù)部分
算數(shù)運(yùn)算符的優(yōu)先級(jí),通過(guò)實(shí)驗(yàn)證明下:
>>> 3 * 4 ** 2 #從結(jié)果看:先計(jì)算4**2=16, 在計(jì)算3*16=48 笑陈,所以優(yōu)先級(jí) 冪運(yùn)算大于乘法
48
>>> 10 - 2 * 6 #從結(jié)果看:先計(jì)算2*6=12际度, 在計(jì)算 10-12 = -2, 所以優(yōu)先級(jí) 乘法大于減法
-2
優(yōu)先級(jí):冪運(yùn)算 , 乘除求余地板除涵妥, 加減法
編程過(guò)程中如何解決默認(rèn)優(yōu)先級(jí)問(wèn)題乖菱,比如先計(jì)算加減,在計(jì)算乘除蓬网?
我們使用()解決優(yōu)先級(jí)問(wèn)題窒所;
例如年計(jì)算年薪:(基本薪資+補(bǔ)助-保險(xiǎn))* 12
>>> salary = 8000
>>> added = 200
>>> deduction = 500
>>> all = (salary + added - deduction) * 12
>>> all
92400
2. 比較運(yùn)算符:
運(yùn)算符 | 描述(a, b為操作數(shù)) |
---|---|
== | 恒等于:a == b, a等于b, 值為True,否則為False |
!= | 不等于:a != b帆锋, a不等于b, 值為True吵取,否則為False |
> | 大于:a > b, a大于b, 值為True锯厢,否則為False |
< | 小于:a < b海渊,a小于b, 值為True,否則為False |
>= | 大于等于:a >= b:哲鸳,a小于或等于b臣疑, 值為True,否則為False |
<= | 小于等于:a<=b徙菠,a小于或等于b讯沈,值位True,否則為False |
比較運(yùn)算符婿奔,一操作就明白意思:
>>> a = 10
>>> b = 20
>>> a == 10
True
>>> a != 10
False
>>> a > b
False
>>> a < b
True
>>> a >= 8
True
>>> a >= 10
True
比較運(yùn)算符和if/else語(yǔ)句一起使用:
腳本文件 test.py:
passline = 60
score = int(raw_input('Enter:')) #輸入的字符串轉(zhuǎn)化成數(shù)字缺狠,只能輸入數(shù)字
if score > 60:
print ('Pass')
else:
print ('Failed')
執(zhí)行結(jié)果如下:
$ python test.py
Enter:80
Pass
$ python test.py
Enter:40
Failed
3. 邏輯運(yùn)算符:
運(yùn)算符 | 描述 (a,b為操作數(shù)) |
---|---|
and | 邏輯與:a and b萍摊, a和b全為真挤茄,表達(dá)式值為運(yùn)算符最后一個(gè)操作數(shù),否則為第一個(gè)值為假的操作數(shù) |
or | 邏輯或:a and b冰木,a和b有一個(gè)為真穷劈,表達(dá)式值為第一個(gè)是真的操作數(shù),否則為False |
not | 邏輯非踊沸,not a歇终,a為真,表達(dá)式結(jié)果假逼龟,反之為真 |
解釋半天不如實(shí)際操作一番评凝,先來(lái)看and:
>>> a = 10
>>> b = 20
>>> a and b #操作數(shù)全為真,返回最后一個(gè)操作數(shù)
20
>>> a and b and 100 #操作數(shù)全為真腺律,返回最后一個(gè)操作數(shù)
100
>>> a and b and 0 #0為假
0
>>> 0 and a #0為假
0
>>> print (a and b and None) #返回第一個(gè)不為真的操作數(shù)None
None
>>>
再開(kāi)看or:
>>> a = 10
>>> b = 20
>>> a and b #返回第一個(gè)是真的操作數(shù)
20
>>> a or None #返回第一個(gè)是真的操作數(shù)奕短,就算有假也改變不了
10
>>> None or False #都是假宜肉,返回最后一個(gè)操作數(shù)
False
>>> not a #順便看下not
False
>>> not None
True
>>> not 10
False
>>>
4. 優(yōu)先級(jí)問(wèn)題:
先驗(yàn)證算術(shù)運(yùn)算符
>>> 100/10**2 #如果先計(jì)算100/10,那么結(jié)果還是100,所以先計(jì)算10**2
1
>>> a = 10
>>> b = 20
>>> b - a * 2 #解釋為: t=a*2=20, b-t=0, *優(yōu)先級(jí)高于減法
0
>>> a + b - 10 #加減法優(yōu)先級(jí)相同翎碑,從左向右計(jì)算
20
>>> a * b / 20 #*/%優(yōu)先級(jí)相同谬返,從左向右計(jì)算(其他運(yùn)算符自己操作下)
10
>>>
驗(yàn)證算數(shù)運(yùn)算符和比較運(yùn)算符:
>>> a = 10
>>> b = 20
>>> a - b > 1 #這個(gè)怎么說(shuō)?看下面單步分析
False
>>> a - b #a-b的值-1杈女, -1>1的值肯定是False朱浴,所以先減法后比較
-10
>>> b > 1 #反推:b>1的值True
True
>>> a - True #a-True的值是9,a-b>1的值不是9达椰,所以翰蠢,先比較后計(jì)算不成立
9
驗(yàn)證比較運(yùn)算符和邏輯運(yùn)算符:
>>> not - 1 > 0 #咋弄?逐步分析:從左向右
True
>>> not - 1 #:not -1 的值False
False
>>> False > 0 #推出肯定不是先計(jì)算not -1,推出先計(jì)算-1 > 0嗎啰劲,然后計(jì)算not
False
>>> 10 > 8 and 1 #再看and :如果先計(jì)算8 and 1返回值應(yīng)該是True,所以...
1
結(jié)果已經(jīng)出來(lái)了:
冪運(yùn)算>乘除>加減>比較運(yùn)算符>邏輯運(yùn)算