lh8877210 发表于 2018-3-18 16:14:16

第六讲作业题问题---新手

题目是:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
这是正确答案:
floor = 7
n = 1
flag = 0

while n<=100 :
    if (floor % 2 == 1) and (floor % 3 ==2) and (floor % 5 ==4) and (floor % 6 ==5):
      flag = 1
    else :
      floor = 7*(n+1)
    n += 1
if flag == 1:
    print ('阶梯数是:',floor)
else:
    print ('找不到答案')

自己写的答案:
floor = 7
n = 1
flag = 0

while n<=20 :
    if (floor % 2 == 1) and (floor % 3 ==2) and (floor % 5 ==4) and (floor % 6 ==5):
      flag = 1
    else :
      n += 1
      floor = 7*n
if flag == 1:
    print ('阶梯数是:',floor)
else:
    print ('找不到答案')

主要就是这个n+=1 为什么不能写到else的里面,每次执行循环,如果没有找到正确的floor,在else里边n也还是会循环+1的呀。

°蓝鲤歌蓝 发表于 2018-3-18 16:33:55

1.放到里面只有执行 else 时才会加 1, 那程序就有可能会无限循环。
2.放到外面执不执行 else 都会加 1,所以不会无限循环。
页: [1]
查看完整版本: 第六讲作业题问题---新手