Python中的斐波那契数列出现无限循环

1 投票
1 回答
625 浏览
提问于 2025-04-18 13:25
#Program to print fibonacci until a range.
print "Fibonacci Series"
print "Enter a range"
range = raw_input()
first=1
second =1
print first
print ", "
print second
print ", "
third = 0
while(third < range):
    third=first+second
    print third
    print ", "
    first = second
    second = third
#End of program

这里,程序让用户输入一个范围,然后打印出这个范围内的数字序列。但是,我遇到了一个无限循环的问题。有没有人能帮我解决这个?

1 个回答

2

range = raw_input() 这行代码把 range 设置成了一个字符串,比如说,它实际上是把 range = '5' 而不是 range = 5

所以在 Python 2.x 中,比较 third < range 这个表达式总是会返回 True,因为整数总是比字符串小:

>>> 10 < '5'
True

要解决这个问题,最简单的方法就是把输入转换成整数:

range = int(raw_input())

不过要注意,range 是一个内置函数,所以你应该给这个变量取个不同的名字。

* 注意在 3.x 版本中,比较字符串和整数会导致错误:

>>> 10 < '5'
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    10 < '5'
TypeError: unorderable types: int() < str()

撰写回答