Collat​​z连词和答案格式

问题描述

我刚接触python时,对python来说还很陌生,所以对我几乎一无所知。我们正在做collat​​z猜想问题,从这里的其他结果中,我可以看到人们相当熟悉。我了解如何使用while循环来获取答案以及这本来的答案:

[IN}:
n = int(input("Please enter a whole greater than number 1 for n: "))

def CollatzC(n):
    print("Starting value is:",n)
    while n > 1:
        if n % 2 == 0:
            n = n // 2
            print (n)
        else: 
            n = (n*3)+1
            print (n)
    return n


print (CollatzC(n))

[out]:
The starting value is: 10 
5
16
8
4
2
1
1

我的问题是输出,因为我的老师希望输出看起来像这样:

[in]: print((CollatzC(10))
[out]: [10,5,16,8,4,2,1]

我在这里看了看,这个答案确实给出了期望的输出,但是我们还没有使用“ yield”,并且由于缺少更好的术语,该类中关于使用“外部函数”的规则是以便能够彻底解释该功能/正在发生的事情,您的推理以及其结果,以使它不会“作弊”。

[in]: 
user = int(input("Enter a number: "))
    
def collatz(n):
    print(n)
    while n != 1:
        if n % 2 == 0:
            n = n // 2
            yield(n)
        else:
            n = n * 3 + 1
            yield(n)

print(list(collatz(user)))

那么有人可以向我解释一下这是怎么回事或解释我如何使它与现有的东西一起工作吗?我也知道我可能会丢失“起始值为:”行。我可以没有它。

如果您能告诉我为什么我最后要得到两个1,则加分!!!

谢谢!

解决方法

如果您仍然需要此代码,这是我的代码。它使用一个函数来执行collat​​z方法,并检查负数和整数。代码的开头会初始化列表,然后collat​​z的每个函数调用都会追加到列表中。

def collatz(number):
    if number % 2 == 0:
        numlist.append(number // 2)
        return(number // 2)
    elif number % 2 == 1:
        result = 3 * number + 1
        numlist.append(result)
        return(result)

# Program starts here.        
while True:
    try:
        # Ask for input and establish list with said input
        n = int(input('Please enter a number: '))
        numlist = [n]
        # If number is negative or 0,asks for positive and starts over.
        if int(n) < 1:
            print('Please enter a positive INTEGER!')
            continue
        #If number is applicable,goes through collatz function.
        while n != 1:
            n = collatz(int(n))
    # If input is a non-integer,asks for a valid integer starts over.
    except ValueError:
        print('Please enter a valid INTEGER!')
    else:
        print(numlist)
        break

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...