tracyK999 发表于 2020-6-3 21:25:21

006讲python的课后练习

就是那个台阶的问题
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上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('在程序限定的范围内找不到答案!')

问题:
1.那个flag表示什么呀?
2.在while条件下,为什么不加上and(x%7==0)呢?
3.后面为什么不能写成(‘阶梯数是:’ + ‘x’)呢?

qiuyouzhi 发表于 2020-6-3 21:28:01

1,flag就是一个标记,找到答案了,就设置为1,否则设置为0。
这样做是为了方便判断,但你直接在找到答案的地方打印x+break也成。
2,看else里面的注释
3,那样的话,x就不是一个变量,是一个字符串了。

Twilight6 发表于 2020-6-3 21:31:06

本帖最后由 Twilight6 于 2020-6-3 21:35 编辑

1.那个flag表示什么呀?
刚刚开始的 flag = 0 是初始化数值,为后面做铺垫,flag的作用是给后面 if 是判断是否存在爱因斯坦阶梯阶梯

因为在while 循环里 如果 if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) 条件成立了说明符合题意,令 flag = 1 就可以当退出循环 运行到 if 时候进行判断是否有阶梯了
2.在while条件下,为什么不加上and(x%7==0)呢?
因为你的题意知道 阶梯数一定是7的倍数,所以我们一开始初始值就设置为7,而后面的阶梯全部经过 else 后增加了 7 个台阶,永远会满足 x%7 的条件
3.后面为什么不能写成(‘阶梯数是:’ + ‘x’)呢?
加上引号会导致python 认为 'x' 是字符串 而不是变量,你直接填 x 才是一个变量

tracyK999 发表于 2020-6-3 22:05:13

好哒 谢谢亲们 我明白啦 但是还需要加强理解
视频容易 动手难呢

zwhe 发表于 2020-6-6 10:53:42

{:10_312:}
页: [1]
查看完整版本: 006讲python的课后练习