所以我基本上只是想弄清楚如何让这个程序打印出第一个斐波那契数,其长度与用户输入的数字相同。这其中的斐波那契计数部分工作正常,我只是在努力理解如何打印出正确对应的数字。在具体理解为什么这行代码时遇到问题:
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]))
代码在这里试图做的是访问变量result
的user
属性,将其转换为str
,然后打印出来。它不起作用,因为变量result
是一个整数,并且没有任何可以使用方括号访问的内容。
您可能要做的是打印result
变量的长度。这可以通过使用str
将result
转换为字符串并使用len
找到其长度来完成。
print(len(str(result)))
这与前一行相结合,print(result)
,将打印出斐波那契数,以及数字的长度。
例如:
1
1
2
1
3
1
5
1
8
1
13
2
...
这不是我们想要的 - 我们希望我们的函数返回第一个斐波那契数,该数字具有用户输入的位数。为此,我们需要将while
条件编辑为以下内容:
while len(str(result)) < user:
因此,我们检查result
的长度是否小于用户要求的长度,如果没有,我们计算下一个斐波那契数。如果是,我们脱离了 while 循环,我们可以返回result
.现在我们也可以删除打印语句。
剩下最后要做的就是用int
包装我们的input
函数 ,将用户输入的数字转换为整数,以便我们可以将其与result
的长度进行比较。
我们的最终程序如下:
法典:
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())