第六讲:python之常用操作符
一、知识点:
0.算术运算符:+,-,*,/,%(取模,即求余数),**(幂运算),//(地板除法,取整除,返回商的整数部分)
备注:①双斜杠 // 除法总是向下取整。
②从符点数到整数的转换可能会舍入也可能截断,建议使用math.floor()和math.ceil()明确定义的转换
1.比较运算符:
运算符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
- 八个比较运算符优先级相同。
- Python允许x < y <= z这样的链式比较,它相当于x < y and y <= z。
- 复数不能进行大小比较,只能比较是否相等。
2.逻辑运算符:
or是个短路运算符,它只有在第一个运算数为False时才会计算第二个运算数的值。
and也是个短路运算符,它只有在第一个运算数为True时才会计算第二个运算数的值。
not的优先级比其他类型的运算符低,所以not a == b相当于not (a == b),而 a == not b是错误的。
3.成员运算符:
python支持成员运算符,包括字符串、列表和元组。
4.身份运算符:
用于比较两个对象的存储单元ID(),而==是比较两个对象的value值。
--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------
二、课后作业:
0.Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
显示1.0。地板除法
1.a < b < c 事实上是等于?
(a<b)and(b<c)
2.不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
0.04,即1/25。
3.如何简单判断一个数是奇数还是偶数?
使用求余可以简单得到答案:能被 2 整除为偶数,所以 x % 2 == 0,否则为奇数。
4.请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
4。not or and 的优先级是不同的:not > and > or。我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and6) or (7 and 8 and 9)== 0 or 0 or 4 or 6 or 9== 4。
--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------
三、动动手:
0.请写一个程序打印0-100所有的奇数。
i=0
while i <= 100:
if i%2 != 0:
print(i)
i += 1
1.我们说过现在的 Python 可以计算很大很大的数据,但是......真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?
print(2 ** 2 ** 32) # 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。涉及到幂操作,结果都是惊人滴。
2.爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。该阶梯至少有多少阶?
step = 7
i = 1
flag =0
while 1:
rang = int(input('请输入阶梯数限定的范围:'))/7
while i < rang:
if step%2 == 1 and step%3 == 2 and step%5 == 4 and step%6 == 5:
flag = 1
else:
step = 7*(i+1)
i += 1
if flag == 1:
print('该阶梯至少有%d阶'%step)
else:
print('在程序限定的范围内找不到答案')
或
flag = 0
i = 7
for j in range(100):
if i%2==1 and i%3==2 and i%5==4 and i%6==5 and i%7==0:
flag = 1
else:
i=7*(j+1)
if flag==1:
print('总台阶数是',i)
else:
print('在一定范围内没有对应的台阶数')
--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------