我是python的新手并且一起编程。我想知道这是否是为初学者生成斐波那契数字的非常低效的方法?
a = 1
b = 1
total = 0
counter = input("Please enter the term you wish to end at: ")
print "1"
print""
print "1"
number = 2
while counter > number:
total = a+b
print ""
print total
a = b
b = total
number = number + 1
如果是这样,有人可以指出一些事情,例如:
研究什么/谷歌使我的代码更有效率。
建议我需要处理的编程实践(我知道这不是我工作的一个很好的例子)。
答案 0 :(得分:5)
使用python,你不要像在C中那样担心效率,尽管你仍然想要达到最短的Big Oh运行时间。你写这篇文章的方式和你能得到的效率一样,所以你不必太担心。但是,使用while
添加到计数器时,它不是非常pythonic。
这可以更简单地写成:
a, b = 0, 1
counter = input("Please enter the term you wish to end at: ")
for _ in xrange(counter): #xrange is more efficient than range, the number is not used so _ is used to show that
a, b = b, a+b
print a
print
您也可以使用生成器,这可能是您可以使用的编程习惯......
def fib(end):
a, b = 0, 1
for _ in xrange(end):
a, b = b, a+b
yield str(a)
counter = input("Please enter the term you wish to end at: ")
print '\n\n'.join(fib(counter))