关于第六讲的课后练习爱因斯坦的难题
x = 7i = 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('在程序限定的范围内找不到答案!')
大家可以给我解释一下这个是什么意思嘛?为什么要设定i?flag又是什么东西呢?为什么不能是简单的:a%2==1,然后直接打印a? 如果有原题目就更好了 我不知道怎样添加 flag就是一个过渡,=0说明没有符合条件的值。等于1说明找到了一个值,后面才会输出。 首先说i,i在这里只是起到一个辅助作用,意在帮助你理解这个循环是怎么进行的,不是必须的,你直接将x作为循环变量进行循环也是可行的。
给你个范例:
x = 7
flag = 0
while x <= 700:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
break
x += 7
if flag == 1:
print('阶梯数是::', x)
else:
print('在程序限定的范围内找不到答案!')
然后是flag,这是一个标志,初始值为0,循环中一旦出现满足条件的数flag就会变为1,因此循环结束后只需观察flag的值即可判断是否有符合条件的数。并且根据这个判断结果写出不同情况下的输出语句 本帖最后由 sunrise085 于 2020-5-7 09:45 编辑
i和flag都可以不要
i只是为了每次房间直接将x加7
flag是个标记,一旦标记flag为1说明找到了,若循环结束后都没有找到,你们flag会一直为0,在循环外就会执行else语句
完全可以不进行标记,找到后就直接输出。
去掉i和flag的程序如下
x = 7
while x <= 700:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
print('阶梯数是:', x)
break
x += 7 # 根据题意,x一定是7的整数倍,所以每次加7
else:
print('在程序限定的范围内找不到答案!') sunrise085 发表于 2020-5-7 09:44
i和flag都可以不要
i只是为了每次房间直接将x加7
flag是个标记,一旦标记flag为1说明找到了,若循环结束 ...
那while X<=700,700这个数字又是怎么来的呢?
Sylvia.ending 发表于 2020-5-9 17:08
那while X
是根据你的程序中i<=100来的啊。
这不就是你要查找的范围么~ sunrise085 发表于 2020-5-9 17:22
是根据你的程序中i
我刚自己写了一下,明白了这个给出的范围。意思就是这个范围是自己定的。
谢谢哈!
页:
[1]