打印第一个具有一定长度的斐波那契数列

Print the first Fibonacci number which has a certain length

所以我基本上只是想弄清楚如何让这个程序打印出第一个斐波那契数,其长度与用户输入的数字相同。这部分的斐波那契计数部分工作正常,我只是在努力理解如何打印出正确对应的数字。有问题具体理解为什么这行代码:

print(str(result[user]))

不起作用,我需要做些什么才能让它起作用。

def fibonacci():
    previous_num, result = 0, 1
    user = input('please enter the length of the fibonacci number you would like to see')
    while True:
        previous_num, result = result, previous_num + result
        print(result)
        print(str(result[user]))


fibonacci()

让我们检查一下您遇到的问题:

print(str(result[user]))

这里的代码试图做的是访问变量 resultuser 属性,将其转换为 str,然后打印它。它不起作用,因为变量 result 是一个整数,并且没有任何可以使用方括号访问的内容。

可能您想要做的是打印 result 变量的长度。这可以通过使用 strresult 转换为字符串并使用 len.

查找其长度来完成
print(len(str(result)))

结合上一行 print(result),将打印出斐波那契数以及数字的长度。

例如:

1
1
2
1
3
1
5
1
8
1
13
2
...

这不是我们想要的 - 我们希望我们的函数 return 第一个具有用户输入的位数的斐波那契数。为此,我们需要将 while 条件编辑为以下内容:

while len(str(result)) < user:

所以我们检查 result 的长度是否小于用户要求的长度,如果不是,我们计算下一个斐波那契数。如果是,我们跳出while循环,我们可以returnresult。现在我们也可以删除打印语句。

最后要做的是用int包装我们的input函数,将用户输入的数字转换为整数,这样我们就可以将它与[=18的长度进行比较=].

那么我们最终的程序如下:

代码:

def fibonacci():
    previous_num, result = 0, 1
    user = int(input('please enter the length of the fibonacci number you would like to see: '))
    while len(str(result)) < user:
        previous_num, result = result, previous_num + result
    return result

print(fibonacci())

输出:

please enter the length of the fibonacci number you would like to see: 10
1134903170

或者: @Sadap 在评论中

def fibonacci():
    previous_num, result = 0, 1
    user = int(input('please enter the length of the fibonacci number you would like to see: '))
    min_num = 10**(user-1)
    while result < min_num:
        previous_num, result = result, previous_num + result
    return result

print(fibonacci())