網絡奇人怪小四 发表于 2022-12-12 11:55:39

小甲魚第11課作業求教

steps = 7 #步數為7的倍數
i = 1 #i到底是什麼呢?
FIND = False #為什麼要用ture or false??

while i < 100:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
      FIND = True
      break
    else:
      steps = 7 * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')

各位朋友
可能到第11講都未正式學到while函數
不明白這個代碼的思路是什麼
為什麼i / step / find 要三個一起用上呢??

網絡奇人怪小四 发表于 2022-12-12 12:15:11

i = 0
steps = 7*(i+1)
steps = int(steps)

while steps >=0:
        if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
                print("階梯數是",step)
        else:
                i=i+1


然後我自已做了這個為什麼跑不起來

lxping 发表于 2022-12-12 12:31:00

i = 0
steps = 7*(i+1)   #实际上steps = 7
steps = int(steps)   #实际上steps = 7
#上面这些语句在循环体之外,执行一次就不会再执行了
#下面是循环内的语句,如果条件成立就会一直执行,steps = 7 >= 0: 是成立的,但是循环内没有改变 steps值的语句,所以steps的值一直为7。
while steps >=0:
      if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
                print("階梯數是",step)
      else:
                i=i+1    #你改变 i 的值并不会返回去执行 steps = 7*(i+1) ,这个语句在循环外,执行一次就结束了

tommyyu 发表于 2022-12-12 15:42:54

網絡奇人怪小四 发表于 2022-12-12 12:15
然後我自已做了這個為什麼跑不起來

1. 第二行steps = 7*(i+1),这一句将会执行 steps = 7*(0+1) = 7,此时 steps 的值已经是7,不需要执行steps = int(steps)

2. 此时 steps 是 7,如果你想让 steps 一直增加,则 while 的条件 steps >= 0 将会一直被满足,而 while 循环中又没有 break 语句,所以这个循环永远不会结束,需要在 print 那一行的后面加上一句 break

3. 尽管 while 循环中有 i=i+1 这一条语句,但是 steps 并没有被重新赋值,所以 steps 的值将一直是 7,因此需要在 i=i+1 后面加上一行 steps =7*(i+1)

最终结果:i = 0
steps = 7*(i+1)

while True:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
      print("階梯數是",step)
      break
    else:
      i=i+1
      steps = 7*(i+1)

编程追风梦 发表于 2022-12-12 19:53:13

如果问题已被解决,请楼主不要忘记设置最佳答案,比如4楼的,他的回答就很好,成功抢在我前面

patrickcui 发表于 2022-12-13 10:12:00

steps = 7 #步數為7的倍數
i = 1 #你可以这么理解i是一个玻璃容器,只不过贴了个标签名叫i,立面放了数字1进去
FIND = False #find是标记,判断是否找到某个事物的标记

while i < 100:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
      FIND = True
      break
    else:
      steps = 7 * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')

網絡奇人怪小四 发表于 2022-12-13 18:30:01

编程追风梦 发表于 2022-12-12 19:53
如果问题已被解决,请楼主不要忘记设置最佳答案,比如4楼的,他的回答就很好,成功抢在我前面

很清楚, 跑起來了,謝謝

網絡奇人怪小四 发表于 2022-12-13 18:31:51

tommyyu 发表于 2022-12-12 15:42
1. 第二行steps = 7*(i+1),这一句将会执行 steps = 7*(0+1) = 7,此时 steps 的值已经是7,不需要执行 ...

很清楚, 跑起來了,謝謝
页: [1]
查看完整版本: 小甲魚第11課作業求教