邏輯和運算是程序重要組成部分,我們先來認識Python中的運算符:
1:算數運算符
2:比較運算符
3:邏輯運算符
1. 算數運算符:
運算符 | 描述 |
---|---|
+, -, *, / | 加減乘除 |
% | 求余 |
** | 冪運算 |
// | 地板除只保留商 |
具體使用如下:
>>> x =10
>>> y = 20
>>> x + y
30
>>> x * y
200
>>> x / y
0.5 #計算結果:浮點
>>> y / x
2.0
>>> x ** 2 #冪運算
100
>>> x // y
0 #計算結果:只取整數部分
>>> y // x
2 #計算結果:只取整數部分
算數運算符的優先級,通過實驗證明下:
>>> 3 * 4 ** 2 #從結果看:先計算4**2=16, 在計算3*16=48 ,所以優先級 冪運算大于乘法
48
>>> 10 - 2 * 6 #從結果看:先計算2*6=12, 在計算 10-12 = -2, 所以優先級 乘法大于減法
-2
優先級:冪運算 , 乘除求余地板除, 加減法
編程過程中如何解決默認優先級問題,比如先計算加減,在計算乘除?
我們使用()解決優先級問題;
例如年計算年薪:(基本薪資+補助-保險)* 12
>>> salary = 8000
>>> added = 200
>>> deduction = 500
>>> all = (salary + added - deduction) * 12
>>> all
92400
2. 比較運算符:
運算符 | 描述(a, b為操作數) |
---|---|
== | 恒等于: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 |
比較運算符,一操作就明白意思:
>>> a = 10
>>> b = 20
>>> a == 10
True
>>> a != 10
False
>>> a > b
False
>>> a < b
True
>>> a >= 8
True
>>> a >= 10
True
比較運算符和if/else語句一起使用:
腳本文件 test.py:
passline = 60
score = int(raw_input('Enter:')) #輸入的字符串轉化成數字,只能輸入數字
if score > 60:
print ('Pass')
else:
print ('Failed')
執行結果如下:
$ python test.py
Enter:80
Pass
$ python test.py
Enter:40
Failed
3. 邏輯運算符:
運算符 | 描述 (a,b為操作數) |
---|---|
and | 邏輯與:a and b, a和b全為真,表達式值為運算符最后一個操作數,否則為第一個值為假的操作數 |
or | 邏輯或:a and b,a和b有一個為真,表達式值為第一個是真的操作數,否則為False |
not | 邏輯非,not a,a為真,表達式結果假,反之為真 |
解釋半天不如實際操作一番,先來看and:
>>> a = 10
>>> b = 20
>>> a and b #操作數全為真,返回最后一個操作數
20
>>> a and b and 100 #操作數全為真,返回最后一個操作數
100
>>> a and b and 0 #0為假
0
>>> 0 and a #0為假
0
>>> print (a and b and None) #返回第一個不為真的操作數None
None
>>>
再開看or:
>>> a = 10
>>> b = 20
>>> a and b #返回第一個是真的操作數
20
>>> a or None #返回第一個是真的操作數,就算有假也改變不了
10
>>> None or False #都是假,返回最后一個操作數
False
>>> not a #順便看下not
False
>>> not None
True
>>> not 10
False
>>>
4. 優先級問題:
先驗證算術運算符
>>> 100/10**2 #如果先計算100/10,那么結果還是100,所以先計算10**2
1
>>> a = 10
>>> b = 20
>>> b - a * 2 #解釋為: t=a*2=20, b-t=0, *優先級高于減法
0
>>> a + b - 10 #加減法優先級相同,從左向右計算
20
>>> a * b / 20 #*/%優先級相同,從左向右計算(其他運算符自己操作下)
10
>>>
驗證算數運算符和比較運算符:
>>> a = 10
>>> b = 20
>>> a - b > 1 #這個怎么說?看下面單步分析
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,所以,先比較后計算不成立
9
驗證比較運算符和邏輯運算符:
>>> not - 1 > 0 #咋弄?逐步分析:從左向右
True
>>> not - 1 #:not -1 的值False
False
>>> False > 0 #推出肯定不是先計算not -1,推出先計算-1 > 0嗎,然后計算not
False
>>> 10 > 8 and 1 #再看and :如果先計算8 and 1返回值應該是True,所以...
1
結果已經出來了:
冪運算>乘除>加減>比較運算符>邏輯運算