Python 以逗号分隔的行打印数字

Python 以逗号分隔的行打印数字,python,fibonacci,Python,Fibonacci,我有这个函数和下面的代码: def fib(): first, second = 0, 1 start = int(input("Please input the desired number ")) for i in range(start): second=first+second first=second-first yield first+second line = "" for i in fib():

我有这个函数和下面的代码:

def fib():
    first, second = 0, 1

    start = int(input("Please input the desired number "))
    for i in range(start):

        second=first+second
        first=second-first

        yield first+second

line = ""
for i in fib():
    line += str(i)
print(line)

我想做的是在一行中用逗号分隔斐波那契数。我该怎么做呢?

首先,您的函数有点错误。您可以通过一些更改来修复它:

def fib():
    first, second = 0, 1

    for i in range(start):

        second=first+second
        first=second-first

        yield first
您还需要从功能外部请求用户输入:

start = int(input("Please input the desired number "))
现在,当达到用户指定的次数时,您可以将斐波那契数添加到列表中,并打印所有由连接的斐波那契数

line = []
line_app = line.append
fib = fib()


for i in range(start): 
    line_app(str(next(fib)))

print(", ".join(line))
编辑:

投入1:

Please input the desired number 4
产出1:

1, 1, 2, 3
投入2:

Please input the desired number 7
产出2:

1, 1, 2, 3, 5, 8, 13
调用fib,将其转换为列表,然后打印结果

print(list(fib()))
输出:

Please input the desired number 5
[2, 3, 5, 8, 13]
如果不喜欢括号,可以将列表转换为字符串并将其删除

print(str(list(fib())).strip("[]"))
#output: 2, 3, 5, 8, 13

。。。但是这样做没有多大意义。

Python2.x还是3.x?你试过什么,有什么问题吗?你得到了什么样的输出,它们与你想要的有什么不同?为什么line_app=line.append?为什么不直接使用line.append呢?这是一种优化。你可以在这里查看:……我不知道为什么会有这么多反对票。。。除了@Kevin之外,没有人留下反馈意见。我认为在这种情况下没有必要进行优化。程序运行时间为0.00001秒,无需优化,0.00000999秒,无需优化。你应该为那些百万分之一秒是生死攸关的应用程序保存这种东西,而不是为斐波那契打印机保存。我否决了你,因为你的打印函数中有一个明显的语法错误。我也同意Kevin关于过早优化的观点,如果你需要快速代码,那么使用另一种更快的语言。