Python斐波那契序列 从十进制导入十进制 pos_inf=十进制(‘无穷大’) f1=1 f2=1 n=0 当n

Python斐波那契序列 从十进制导入十进制 pos_inf=十进制(‘无穷大’) f1=1 f2=1 n=0 当n,python,Python,这显然是一个Fibonacci生成器,其中一个正在打印的数字在某一点上为144,这将是第一个有3位数字的数字。我不确定上面的内容为什么不起作用?我假设您希望在while循环之后缩进所有内容 这就是您想要做的: from decimal import Decimal pos_inf = Decimal('Infinity') f1 = 1 f2 = 1 n = 0 while n < pos_inf: n = f1 + f2 f1 = n f2 = f1 + f

这显然是一个Fibonacci生成器,其中一个正在打印的数字在某一点上为144,这将是第一个有3位数字的数字。我不确定上面的内容为什么不起作用?

我假设您希望在while循环之后缩进所有内容

这就是您想要做的:

from decimal import Decimal
pos_inf = Decimal('Infinity')

f1 = 1
f2 = 1
n = 0

while n < pos_inf:
    n = f1 + f2

    f1 = n
    f2 = f1 + f2

    print(f1)
    if(len(str(f1) == 3):
         break
     print(f1 + the number is found)
print(f2)

if(len(str(f2) == 3):
    break
print(f2 + the number is found)
此外,一旦f1命中一个3位数字,您的代码将打印它,然后中断

此外,在print语句中需要引号,并将整数转换为字符串:

f1 = f2
f2 = n

问题是如何计算斐波那契数。它应该是

print(str(f1) + ' the number is found')
而n
您的if语句中缺少参数也有错误。这应该可以:

while n < pos_inf:
    n = f1 + f2
    f2 = f1
    f1 = n
从十进制导入十进制
pos_inf=十进制(‘无穷大’)
f1=1
f2=1
n=0
当n
如果您只是查找前3位febbonaci号码,那么下面的代码应该可以

from decimal import Decimal
pos_inf = Decimal('Infinity')
f1 = 1
f2 = 1
n = 0

while n < pos_inf:
    n = f1 + f2

    f1 = n
    f2 = f1 + f2
    print(f1)
    if(len(str(f1)) == 3):
       print(str(f1) + 'the number is found')
       break
    print(f2)
    if(len(str(f2)) == 3):
       print(str(f2) + 'the number is found')
       break
从十进制导入十进制
pos_inf=十进制(‘无穷大’)
f1=1
f2=1
n=0
当n
您的代码有很多简单的语法错误(例如错误的括号、错误的缩进和多余的代码),但是这个概念基本上是正确的

您犯的唯一逻辑错误是重复使用了
f2
迭代器

在这里,我修复了您的代码:

from decimal import Decimal
pos_inf = Decimal('Infinity')

f1 = 1
f2 = 1
n = 0

while n < pos_inf :
    n = f1 + f2
    f1 = f2
    f2 = n
    print(f2)
    if (len(str(f2)) == 3):
        break

print f2, "3 digit number found"

这是我的解决方案。虽然我无法通过与您正在使用的pos\u inf变量有关的错误。它说它无法将无穷大转换为整数。可能这给您带来了问题

1
2
3
5
8
13
21
34
55
89
144 the number is found
233

我调整了缩进,假设您在撰写问题时存在复制/粘贴困难。如果您的代码没有像上面那样缩进,请修复它,然后重试以查看问题是否仍然存在。“不工作”怎么做?如果不尝试你的代码,似乎
while
循环应该运行相当长的时间…那些
if/break
应该进入循环吗?现在我更不清楚你的代码到底是什么。请修正缩进以匹配你尝试的内容。另外,添加你得到的输出和你期望的内容。修正缩进n并在
print
语句中的字符串中添加引号,则该语句将起作用。由于行
if(len(str(f1)==3)上的括号不匹配,发布的代码无法运行:
这可能是问题所在吗?另一个问题可能是缩进。您在每次迭代中添加f2两次HH我知道了,谢谢,但它仍然会生成正确的数字演示如何操作?每次迭代后您的
n
是什么?我在同一次迭代中同时更改f1和f2…而不是一次更改f1
1
2
3
5
8
13
21
34
55
89
144 the number is found
233
var1 = var2 = 1
result = 0

print(result)
print(var1)
print(var2)

for x in range(1,100):
    result = var1 + var2
    print(result)
    var2 = var1
    var1 = result
    if result == 144:
        print("The number has been found")
        break