2017-02-21 20 views
0

所以我尝试使用input号码打印斐波那契序列。我不知道如何在我的代码中输入数字。从输入号码打印斐波那契

def fibonacci(n): 
    a,b=0,1 
    while(a<n): 
     print(a,end=' ') 
     a,b=b,a+b 
    print() 

fibonacci(fibo_entry=input("enter number")) 

我得到这个错误:

TypeError               Traceback (most recent call last) 
    <ipython-input-113-d552685b93df> in <module>() 
     7   a,b=b,a+b 
     8  print() 
    ----> 9 fibonacci(fibo_entry=input("enter number")) 

    TypeError: fibonacci() got an unexpected keyword argument 'fibo_entry' 

回答

4

TypeError是因为你的功能不采取fibo_entry -argument。你可以这样调用它:

fibonacci(input("enter number")) 

但是这会给你一个错误,因为input总是返回上python3一个字符串,所以你需要将其转换为数值:

import ast 
fibonacci(ast.literal_eval(input("enter number"))) 

或明确:

fibonacci(int(input("enter number"))) 

不过,我会建议捕捉输入作为独立变量,只是变量传递给函数:

fibo_entry = int(input("enter number")) 
fibonacci(fibo_entry) 
+0

非常感谢!显式方法起作用并且看起来很简单。 –

+0

@KrithikaKrishnan没问题。请不要忘记[接受](http://stackoverflow.com/help/accepted-answer)/ upvote有用的答案。 :) – MSeifert

+0

嗨@KrithikaKrishnan *如果*答案解决了您的问题,如您所示,请考虑接受答案(在左侧上/下箭头下方勾选大“V”)。这是指出答案适用于您的适当方式,并增加您未来可以获得良好答案的机会。 –

1

在这一行中,python解释器认为你试图为fibonacci指定一个参数。

fibonacci(fibo_entry=input("enter number")) 

最简单的解决方法是分离出来。你也必须转换为int,因为输入返回一个字符串:

fibo_entry=int(input("enter number")) 
fibonacci(fibo_entry) 
0

你需要使用类型转换为你“输入”功能, 这样做:

num=int(input("enter number: ")) 
fibonacci(num) 

或做这样的:

fibonacci(int(input("enter number: ")))