逻辑和运算是程序重要组成部分,我们先来认识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
结果已经出来了:
幂运算>乘除>加减>比较运算符>逻辑运算