weicheng 发表于 2020-12-17 22:42

python求解答

def collatz(number):
    if number%2==0:
      
      return number//2
    else:      
      return 3*number+1
   
try:
    input_number = int(input("请输入一个整数:"))
    while True:
      input_number=collatz(input_number)
      print(collatz(input_number))
      if input_number==1:
            break
except:
      print('出现错误!只支持输入整数!')

      #问题:为啥输出的时候会多出4来?

请输入一个整数:8
2
1
4

细水流长 发表于 2020-12-17 22:58

klamauk 发表于 2020-12-17 22:59

为什么不调试一下呢。

klamauk 发表于 2020-12-17 23:02

if input_number==1:
       break
print(collatz(input_number))

交换一下位置,看看是不是你想要的结果。其实最好就是自己调试。编程怎么可能不调试。

flyingdancex 发表于 2020-12-17 23:08

编程最好就是自己调试

78776756 发表于 2020-12-17 23:11

算法就有问题,先改变然后输出一个改变后又改变的值,这么想都不符合逻辑
      input_number=collatz(input_number)
      print(collatz(input_number))
输出1时input_number的值是2,所以不能退出
输出4时input_number的值才是1

公子如玉世无双 发表于 2020-12-17 23:12

本帖最后由 公子如玉世无双 于 2020-12-17 23:24 编辑

def collatz(number):
    if number%2==0:
      
      return number//2
    else:      
      return 3*number+1
   
try:
    input_number = int(input("请输入一个整数:"))
    while True:
      input_number=collatz(input_number)
      print(input_number)
      if input_number==1:         
            break
except:
      print('出现错误!只支持输入整数!')

langu 发表于 2020-12-17 23:45

因为两次函数调用,所以1又被改回去了

weicheng 发表于 2020-12-18 00:05

klamauk 发表于 2020-12-17 23:02
if input_number==1:
       break
print(collatz(input_number))


可以了,嘻嘻,谢谢,新学的新手很多不明白的地方

wx20000601 发表于 2020-12-18 00:09

因为1%2!=0叭
页: [1] 2
查看完整版本: python求解答