Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python的斐波那契序列_Python_While Loop_Anaconda_Fibonacci - Fatal编程技术网

使用Python的斐波那契序列

使用Python的斐波那契序列,python,while-loop,anaconda,fibonacci,Python,While Loop,Anaconda,Fibonacci,您好,我正在尝试编写一个脚本,提示用户输入整数(n),然后按该顺序打印所有小于或等于输入的斐波那契数。 例如: 输入一个数字:14 输出为:1 1 2 3 5 8 13 这是我到目前为止得到的,但不确定这是否是最有效的方法?它工作正常,但我想知道是否有更简单的方法来清理这个 n = int(input("Enter a number: ")) a = 0 b = 1 sum = 0 while(sum <= n): print(sum, end = "

您好,我正在尝试编写一个脚本,提示用户输入整数(n),然后按该顺序打印所有小于或等于输入的斐波那契数。 例如:

输入一个数字:14

输出为:1 1 2 3 5 8 13

这是我到目前为止得到的,但不确定这是否是最有效的方法?它工作正常,但我想知道是否有更简单的方法来清理这个

n = int(input("Enter a number: "))
a = 0
b = 1
sum = 0


while(sum <= n):
 print(sum, end = " ")
 count += 1
 a = b
 b = sum 
 sum = a + b

print(end = " ")
n=int(输入(“输入一个数字”))
a=0
b=1
总和=0
而像这样的事情呢

n = int(input("Enter a number: "))

fib = [0, 1]
while fib[-1] + fib[-2] <= n:
    fib.append(fib[-1] + fib[-2])

print(fib)
n=int(输入(“输入一个数字”))
fib=[0,1]
而fib[-1]+fib[-2]是这样的吗

n = int(input("Enter a number: "))

fib = [0, 1]
while fib[-1] + fib[-2] <= n:
    fib.append(fib[-1] + fib[-2])

print(fib)
n=int(输入(“输入一个数字”))
fib=[0,1]

虽然fib[-1]+fib[-2]这种方法足够有效,但您的代码可以做得更好

n = int(input("Enter a number: "))
a = b = 1

while(b <= n):
 print(b, end = " ")
 a, b = b, a + b
n=int(输入(“输入一个数字”))
a=b=1

虽然(b这种方法足够有效,但是您的代码可以做得更好

n = int(input("Enter a number: "))
a = b = 1

while(b <= n):
 print(b, end = " ")
 a, b = b, a + b
n=int(输入(“输入一个数字”))
a=b=1

虽然(b我不太喜欢上面的方法,因为数字序列是无限的,而内存分配不是无限的。因此,为了有效地获得可能最高的可计算数字(当然是通过您的计算机),应该明确使用生成器。

ITERATIONS = 100
def fibo():
     a, b = 0, 1
    
     while True:
         a, b = b, a + b
         yield b

f = fibo()

for _ in range(ITERATIONS):
     print(next(f))
但请记住,如果您尝试类似于
列表(f)
的操作,您的计算机将100%崩溃,因为数字序列是无限的,而您的计算机电源和存储不是无限的


有一个好的。

我不太喜欢上面的方法,因为数字序列是无限的,而内存分配不是无限的。因此,为了有效地获得可能最高的可计算数字(当然是通过您的计算机),应该明确地使用生成器。

ITERATIONS = 100
def fibo():
     a, b = 0, 1
    
     while True:
         a, b = b, a + b
         yield b

f = fibo()

for _ in range(ITERATIONS):
     print(next(f))
但请记住,如果您尝试类似于
列表(f)
的操作,您的计算机将100%崩溃,因为数字序列是无限的,而您的计算机电源和存储不是无限的


有一个很好的方法。

按原样,它甚至不运行。它也会先打印0。它足够干净,如下面的答案所示,只声明两个变量而不使用
sum
不是编码约定的最佳实践。我发现这个方法可以帮助您:按原样,它甚至不运行。它也会先打印0。它足够干净,如下面的答案所示,只声明2 va没有
sum
的变量并不是编码约定的最佳实践。我发现这一个可以帮助您:您正在执行两次加法,这根本不是非常优化。是的,存储该总和可能会带来一些改进。在循环内打印到屏幕也不好,这就是为什么我建议将序列存储在列表中。您正在执行两次加法,这根本不是很优化。是的,存储该总和可能会带来一些改进。打印到循环内的屏幕也不好,这就是为什么我建议将序列存储在列表中。您可以检查此问题的解决方案,您可以检查此问题的解决方案