Cherie_23 发表于 2021-2-13 17:04:13

求解答循环课后答案

1. 验证角谷猜想Powered by https://fishc.com.cn

角谷猜想的内容是:任意给定一个自然数,若它为偶数则除以 2,若它为奇数则乘以 3 再加 1,得到一个新的自然数,按照这样的方法计算下去,最终的结果必将是 1。

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


上面是课后答案,但是我自己写的时候是没有n=n//2 和 n=n*3+1 这两句的

我不是很明白这两句代码的意义,求解答

洋洋痒 发表于 2021-2-13 17:15:49

{:10_285:}

Daniel_Zhang 发表于 2021-2-13 17:46:51

所以你是认为 print 里面的那个n // 2和 n * 3 + 1 会被赋值给 n 还是你压根没太看懂题目

题目说的是随便取一个数,如果偶数就除以 2, 如果奇数就乘以3再加一,生成一个新的数,对新的数再进行处理

如此往复,会发现最后的结果都是 1

所以橙色那两行就是为了: 如果偶数就除以 2, 如果奇数就乘以3再加一

n // 2 是地板除法,出来的结果向下取整

比如:5 // 2 = 2      3 // 2 = 1

不论小数部分是多少,都只取整数部分

n = n // 2 就是对 n 进行地板除法,再将结果赋值给 n

n = n * 3 + 1 就是 将 n 乘以3再加1的结果赋值给 n

永恒的蓝色梦想 发表于 2021-2-13 21:02:47

把你滴代码发粗来~
页: [1]
查看完整版本: 求解答循环课后答案