柿子饼同学 发表于 2021-2-16 18:56:24

Python作业第15讲的问题

就是第15讲课后作业的最后一题 那个角谷猜想
甲鱼老师写的代码有点不懂 为什么是for i in range(1000)
n = int(input("请输入一个自然数:"))
   
for i in range(1000):
    if n % 2 == 0:
      print(n, "/2 = ", n // 2, sep='')
      n = n // 2
    else:
      print(n, "*3+1 = ", n * 3 + 1, sep='')
      n = n * 3 + 1
    if n == 1:
      break
难道是为了防止死循环?{:10_243:}
感谢解答哈

柿子饼同学 发表于 2021-2-16 18:57:45

这代码里的那个是不小心写上去的

Daniel_Zhang 发表于 2021-2-16 18:58:44

你想搞 for i in range(1000000000) 也是没有任何问题的,前提是你能等程序运行完

这个只是为了验证随便一个数,循环处理后会 = 1

只是随便举了一个例子而已

尝试 1 - 1000 里面的所有数,看看是不是能证实角谷猜想

昨非 发表于 2021-2-16 19:12:56

for i in range(1000):
这个for循环i没有特别的用途,只是限制下执行次数,最终循环终止的标准还是要看:
    if n == 1:
      break
比如当你输入为123456时:
你把1000改成100,发现打印的结果是一样,说明测试到结果为1时,i<100,跳出
也可以这样检验:
    if n == 1:
      print(i)#加上这一行,打印输入为123456时的终止i得值,为60
      break
页: [1]
查看完整版本: Python作业第15讲的问题