|
发表于 2021-1-5 12:59:12
|
显示全部楼层
本帖最后由 昨非 于 2021-1-5 13:10 编辑
这是小甲鱼答案的解释:
- x = 7
- i = 1
- flag = 0
- while i <= 100: #循环变量是i,因为题目要找满足条件的最小x值,所以这里写成i<=1000000也是一样的结果,这个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的整数倍所以七个七个的跳着取值,之所以这么写,是为了减少一个一个比较的运算量(提高执行速度)
- i += 1
- #当i=17时,x=119,刚好是满足题目的最小值,此次循环中,执行if,标识符flag变为1,else不执行,所以之后的x值不变,一直为119
- #下次循环:i+=1,只执行if,x不变,直到i>100,跳出循环
- if flag == 1: #根据标实符flag打印结果(仍为119)
- print('阶梯数是:', x)
- else:
- print('在程序限定的范围内找不到答案!')
复制代码
你的答案:
- x = 7
- a= 1
- while a == 1:
- if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
- print(x)
- a = 2
- else:
- x = x + 1
- #你的答案里,x本身是循环变量,循环条件由a的值来控制,答案是对的,只不过因为是一格一格比较的,运算次数是小甲鱼答案的七倍,
- # 当然,程序简单,这点儿差异根本察觉不到
复制代码
如果不限制只输出最小值的话,可以这么改:
- x = 7
- while 1: #死循环 (就不必用a来判断了)
- if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and(x%7==0):
- print(x)
- x = x + 1 #不必加else分支,直接写在while循环里,缩进与if平级作为循环变量即可
- if x>1000: #避免死循环,只输出前1000以内的符合条件的值
- break
复制代码
测试结果为(1000以内):
|
|