当前位置:   article > 正文

小甲鱼Python课后作业十

小甲鱼Python课后作业十

短路逻辑和运算符优先级

  运算符优先级链接二

1. 请问下面表达式的值是什么?

>>> 3 == not 5
  • 1

  会报错。由于 not 运算符的优先级比 ==运算符低,所以表达式是先运算 == 的,即先求出 3 == not 的结果,很明显,Python 彼时很懵逼。

2. 请问下面表达式的值是什么?

>>> 3 or 5 and 0
  • 1

  3。由于 or 运算符的优先级比 and 运算符低,所以表达式的运算顺序是 3 or (5 and 0),即 3 or 0,结果为 3。

3. 请问下面表达式的值是什么?

>>> 3 and 5 + True or False
  • 1

  6。这里应该先考虑运算符优先级,加号(+)的优先级比逻辑运算符的优先级高,所以先运算加法,即3 and (5 + True) or False
  当 True 参数运算时,将当作数字 1 来使用,所以结果是 3 and 6 or False
  接着基于短路逻辑(从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值),所以 3 and 6 的结果为 6。同样的道理,基于短路逻辑,6 or False 第一个操作数的值可以确定逻辑运算的结果,因此最终结果是 6。

4. 请问下面表达式的值是什么?

>>> 0 and not 1 or not 2 and 3 or 4 and not 5
  • 1

  False。
  这个表达式中,not 运算符的优先级最高,所以表达式变成0 and False or False and 3 or 4 and False。接下来 and 运算符的优先级比 or 要高,所以先计算 and,结果如下0 or False or False 基于“短路逻辑”,结果为 False。

5. 请问下面表达式的值是什么?

>>> 1 == 2 < 3
  • 1

  False。
  注意,这个链式比较,拆出来是1 == 2 and 2 < 3,而不是先1 == (2 < 3).得到的是两个截然不同的结果。

6. 请将下面的链式比较转换为使用 and 的普通比较。

>>> 1 < 2 > 3 < 4 < 5
  • 1

  1<2 and 2>3 and 3<4 and 4<5
  固然链式比较有更容易辨识、更方便输入的优势,但如果“链子”拉太长,还是容易掉的。这时候,使用传统的普通比较拼接,代码会更容易阅读。

7. 爱因斯坦曾出过这样一道有趣的数学题:

有一个长阶梯,若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。

求解该阶梯的最终数量?

steps = 7
i = 1
FIND = False

while i < 100:
    if (steps%2==1)and(steps%3==2)and(steps%5==4)and(steps%6==5):
        FIND = True
        break
    else:
        steps = 7 + 7*i
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/412523
推荐阅读
相关标签
  

闽ICP备14008679号