目录:
一、算术操作符
二、优先级问题
三、比较操作符
四、逻辑操作符
五、课时06课后习题及答案
******************
一、算术操作符
******************
>>> a = b = c = d = 10 >>> a += 1 >>> b -= 3 >>> c *= 10 >>> d /= 8 >>> (a,b,c,d) (11, 7, 100, 1.25)
在这里我们发现,即使是进行整数间的除法,但是答案是自动返回一个浮点型的精确数值,也就是说Python用真正的除法代替了地板除法。
地板除法的概念是:计算结果取比商小的最大整型,也就是舍弃小数的意思。(注:例如3 / 2等于1)
>>> 3 / 2 1.5 >>> 3 // 2 1 >>> 3.0 // 2 1.0 >>> 3.0 / 2 1.5
值得注意的一点是,无论是整数运算还是浮点数运算,都不会执行地板除法。需要用//。
>>> 5%2 1 >>> 4%2 0 >>> 520 % 14 2 >>>
百分号(%)表示求余数的意思。
******************
二、优先级问题
******************
先乘除后加减,如有括号先算括号里的。
>>> -3 * 2 + 5 / -2 -4 -12.5 >>> (-3) * 2 + 5 / (-2) -4 -12.5
Python中还有一个特殊的乘法,就是双星号(**),也称为幂运算操作符。例如3**2,双星号左侧的3称为底数,右侧的2称为指数,把这样的算式叫作3的2次幂,结果就是3*3==9.
在使用Python进行幂运算的时候,需要注意一点是优先级问题,因为幂运算操作符和一元操作符(只有一个操作数)的优先级关系比较特别:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低:
>>> -3 ** 2 -9 >>> - (3 ** 2) -9 >>> 3 ** -2 0.1111111111111111 >>> 3 ** (-2) 0.1111111111111111
******************
三、比较操作符
******************
比较操作符包括:< <= > >= == !=
比较操作符根据表达式的值的真假返回布尔类型的值。
******************
四、逻辑操作符
******************
逻辑运算符包括: and or not
and :同真为真
or:同假为假
not :它的作用是得到一个和操作数相反的布尔类型的值
>>> not True False >>> not 0 True >>> not 4 False >>> 3 < 4 <5 True >>> 3 < 4 and 4 < 5 True
在Python中,0解释为False,非0的数解释为True。
Python操作符优先级:
*******************************
五、课时06课后习题及答案
*******************************
测试题:
0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0
猜测:
1.0
实际:
>>> 3.0 // 2.0
1.0
1. a < b < c 事实上是等于?
(a < b) and (b < c)
a < b and b < c and a < c
运行结果:
>>> 1 < 2 < 3
True
>>> 1 < 2 and 2 < 3 and 1 < 3
True
2. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
0.04,也就是 1/25
幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低。
5 ** (-2)
运行结果:
>>> 5 ** -2
0.04
3. 如何简单判断一个数是奇数还是偶数?
答: 使用求余可以简单得到答案:能被 2 整除为偶数,所以 x % 2 == 0,否则为奇数。
>>> 11 % 2 == 0
False
>>> 10 % 2 == 0
True
4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
如果你的回答是 0,那么小甲鱼很开心你中招了!
答案是:4
not or and 的优先级是不同的:not > and > or
我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5
and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9
== 4
为啥是 4?
大家还记得第四讲作业提到的“短路逻辑”吗?3 and 4 == 4,而 3 or 4 == 3。
所以答案是:4
温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。
True
5. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?
因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方式来“委曲求全”。
动动手:
0. 请写一个程序打印出 0~100 所有的奇数。
代码:
for i in range(0,100):
if i % 2 != 0:
print(i)
运行结果:
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
81
83
85
87
89
91
93
95
97
99
1. 我们说过现在的 Python 可以计算很大很大的数据,但是……真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?
x = 100
while True:
print(x)
x *= 100
2. 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
题目:请编程求解该阶梯至少有多少阶?
x = 7
i = 1
flag = 0
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
i += 1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')
代码:
i = 0
while True:
if (i % 2 == 1) and (i % 3 == 2) and (i % 5 == 4) and (i % 6 == 5) and (i % 7 == 0):
print('**********************')
print('满足要求的楼梯数为:' + str(i))
print('**********************')
break
else:
print('不满足要求的楼梯数:' + str(i))
i += 1
运行结果:
不满足要求的楼梯数:0
不满足要求的楼梯数:1
不满足要求的楼梯数:2
不满足要求的楼梯数:3
不满足要求的楼梯数:4
不满足要求的楼梯数:5
不满足要求的楼梯数:6
不满足要求的楼梯数:7
不满足要求的楼梯数:8
不满足要求的楼梯数:9
不满足要求的楼梯数:10
不满足要求的楼梯数:11
不满足要求的楼梯数:12
不满足要求的楼梯数:13
不满足要求的楼梯数:14
不满足要求的楼梯数:15
不满足要求的楼梯数:16
不满足要求的楼梯数:17
不满足要求的楼梯数:18
不满足要求的楼梯数:19
不满足要求的楼梯数:20
不满足要求的楼梯数:21
不满足要求的楼梯数:22
不满足要求的楼梯数:23
不满足要求的楼梯数:24
不满足要求的楼梯数:25
不满足要求的楼梯数:26
不满足要求的楼梯数:27
不满足要求的楼梯数:28
不满足要求的楼梯数:29
不满足要求的楼梯数:30
不满足要求的楼梯数:31
不满足要求的楼梯数:32
不满足要求的楼梯数:33
不满足要求的楼梯数:34
不满足要求的楼梯数:35
不满足要求的楼梯数:36
不满足要求的楼梯数:37
不满足要求的楼梯数:38
不满足要求的楼梯数:39
不满足要求的楼梯数:40
不满足要求的楼梯数:41
不满足要求的楼梯数:42
不满足要求的楼梯数:43
不满足要求的楼梯数:44
不满足要求的楼梯数:45
不满足要求的楼梯数:46
不满足要求的楼梯数:47
不满足要求的楼梯数:48
不满足要求的楼梯数:49
不满足要求的楼梯数:50
不满足要求的楼梯数:51
不满足要求的楼梯数:52
不满足要求的楼梯数:53
不满足要求的楼梯数:54
不满足要求的楼梯数:55
不满足要求的楼梯数:56
不满足要求的楼梯数:57
不满足要求的楼梯数:58
不满足要求的楼梯数:59
不满足要求的楼梯数:60
不满足要求的楼梯数:61
不满足要求的楼梯数:62
不满足要求的楼梯数:63
不满足要求的楼梯数:64
不满足要求的楼梯数:65
不满足要求的楼梯数:66
不满足要求的楼梯数:67
不满足要求的楼梯数:68
不满足要求的楼梯数:69
不满足要求的楼梯数:70
不满足要求的楼梯数:71
不满足要求的楼梯数:72
不满足要求的楼梯数:73
不满足要求的楼梯数:74
不满足要求的楼梯数:75
不满足要求的楼梯数:76
不满足要求的楼梯数:77
不满足要求的楼梯数:78
不满足要求的楼梯数:79
不满足要求的楼梯数:80
不满足要求的楼梯数:81
不满足要求的楼梯数:82
不满足要求的楼梯数:83
不满足要求的楼梯数:84
不满足要求的楼梯数:85
不满足要求的楼梯数:86
不满足要求的楼梯数:87
不满足要求的楼梯数:88
不满足要求的楼梯数:89
不满足要求的楼梯数:90
不满足要求的楼梯数:91
不满足要求的楼梯数:92
不满足要求的楼梯数:93
不满足要求的楼梯数:94
不满足要求的楼梯数:95
不满足要求的楼梯数:96
不满足要求的楼梯数:97
不满足要求的楼梯数:98
不满足要求的楼梯数:99
不满足要求的楼梯数:100
不满足要求的楼梯数:101
不满足要求的楼梯数:102
不满足要求的楼梯数:103
不满足要求的楼梯数:104
不满足要求的楼梯数:105
不满足要求的楼梯数:106
不满足要求的楼梯数:107
不满足要求的楼梯数:108
不满足要求的楼梯数:109
不满足要求的楼梯数:110
不满足要求的楼梯数:111
不满足要求的楼梯数:112
不满足要求的楼梯数:113
不满足要求的楼梯数:114
不满足要求的楼梯数:115
不满足要求的楼梯数:116
不满足要求的楼梯数:117
不满足要求的楼梯数:118
**********************
满足要求的楼梯数为:119
**********************