入门学习-Python-小甲鱼学习资料-Day006-Pyhon之常用操作符

标题 Pyhon之常用操作符

根据视频自己练习 :

视频练习代码 :
a=b=c=d=10 ; print(a-1) ; print(b+3) ; print(c*10)

print(d/4) ; print(d//4)

print(a%3) ; print(a%7)

print(2**10)

print(-32) # 幂操作符 比 左 侧优先级 高
print(3
-2) # 幂操作符 比 右 侧优先级 低

print(not 0) ; print(not 4) ; print(not False) # False 和 True 的首字母大写 , 小心了 !!!/print(not True)

print(3<4<5)
temp1 = 3
temp2 = 4
temp3 = 5
print(temp1<temp2<temp3) # 这个用法挺有意思

标题 006测试题答案:

  1. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?

如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是: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
    如果你的回答是 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
    温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。

关于短路逻辑

“短路逻辑(short-circuit logic) :逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。
这种行为被称为短路逻辑(short-circuit logic)或者惰性求值(lazy evaluation),这种行为同样也应用与 or 操作符 ,实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值(例子参考楼上)。
我的理解 :
还有很关键的一句 : and的左侧为Ture 以及 or的左侧为 False , 都不能使用 短路逻辑 ,这句话小甲鱼没说 , 依此重新分析 :
(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 [注意 :0 or 0 or 4 这一段不适用短路逻辑 ]
== 0 or 4 or 6 or 9
== 4 or 6 or 9 [这时候 短路逻辑 开始生效]
== 4 or 9
== 4
这样就明白了 !

  1. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?
    因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方式来“委曲求全”。

动动手答案:
0. 请写一个程序打印出 0~100 所有的奇数。

  1. i = 0

  2. while i <= 100:

  3.  if i % 2 != 0:
    
  4.      print(i, end=' ')
    
  5.      i += 1
    
  6.  else:
    
  7.      i += 1
    
  8. 我们说过现在的 Python 可以计算很大很大的数据,但是…真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?
    print(2 ** 2 ** 32)

一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。

设计到幂操作,结果都是惊人滴。

2.爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
题目:请编程求解该阶梯至少有多少阶?

  1. x = 7
  2. i = 1
  3. flag = 0
  4. while i <= 100:
  5.  if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
    
  6.      flag = 1
    
  7.  else:
    
  8.      x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    
  9. i += 1
    
  10. if flag == 1:
  11. print('阶梯数是:', x)
    
  12. else:
  13. print('在程序限定的范围内找不到答案!')
    

下面是我写的代码 : 答案是 119
stepright = 0
markit = True
while not (stepright%2 ==1 and stepright%3 == 2 and stepright%5 == 4 and stepright%6 == 5 and stepright%7 == 0):
stepright = stepright+1
print("满足要求的最小步数是: ",stepright)

猜你喜欢

转载自blog.csdn.net/seven1levin/article/details/86003032