【Python】小甲鱼课后习题第6讲--常用操作符

问答题

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

答:Python 会义无反顾地执行 floor 除法原则,答案是:1.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 and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9
== 4

大家还记得“短路逻辑”吗?3 and 4 == 4,而 3 or 4 == 3。
所以答案是:4

5. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?

答:用“if year/400 == int(year/400)”这样的方式来“委曲求全”。

动动手

0. 请写一个程序打印出 0~100 所有的奇数。

答:代码如下:

for i in range(0,100):
    if i%2==0:
        continue
    else:
        print(i, end=' ')

运行结果如下:
在这里插入图片描述

2. 爱因斯坦的难题

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

题目:请编程求解该阶梯至少有多少阶?

答:这道题我一开始写的代码是这样的:

x=0

while True:
    if (x%2==1)and(x%3==2)and(x%5==4)and(x%6==5)and(x%7==0):
        print(x)
        break
    x=x+1

后来看小甲鱼的代码发现我写的代码效率比较低所以就修改了一下,如下:

i=1
x=7   #由题意可得i的取值应该为7的倍数

while True:
    if (x%2==1)and(x%3==2)and(x%5==4)and(x%6==5)and(x%7==0):
        print(x)
        break
    i=i+1
    x=x*i    #这样赋值可以提高效率,如果每次+1效率太低

然后运行了半天也没出结果,肯定是哪出问题了,否则不会这么慢,找了半天错,才发现 x 赋值表达式不对,像 x=x*i 这样的话会导致 7 的 某些倍数直接被跳过导致正确答案被漏下了。 最后正确代码如下:

i=1
x=7   

while True:
    if (x%2==1)and(x%3==2)and(x%5==4)and(x%6==5):
        print(f"阶梯数为:{x}")
        break
    i=i+1
    x=7*i    

运行结果为119。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早知晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值