2017-02-21 2 views
0

So habe ich versucht, Fibonacci-Sequenz mit einer input Nummer drucken. Ich bin mir nicht sicher, wie ich eine Nummer in meinen Code eingeben soll.Drucken von Fibonacci von Eingabe Nummer

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")) 

Ich erhalte diese Fehler:

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' 

Antwort

4

Die TypeError ist, weil Ihre Funktion keine fibo_entry -Argument nimmt. Man könnte es so nennen:

fibonacci(input("enter number")) 

Doch diese Sie einen anderen Fehler geben, weil die input immer einen String auf python3 zurückgibt, so müssen Sie es auf eine Zahl werfen:

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

oder explizit :

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

Allerdings würde ich empfehlen die Eingabe als separate Variable zu kontrollieren und diese Variable an die Funktion übergeben Sie einfach:

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

Vielen Dank.! Die explizite Methode hat funktioniert und scheint einfach zu sein. –

+0

@ KrithikaKrishnan Kein Problem. Bitte vergessen Sie nicht, [akzeptieren] (http://stackoverflow.com/help/accepted-answer)/upvote hilfreiche Antworten. :) – MSeifert

+0

Hi @ KrithikaKrishnan * Wenn * die Antwort dein Problem gelöst hat, wie du angegeben hast, beachte bitte, dass du die Antwort akzeptierst (tickle das große "V" unter den Auf/Ab-Pfeilen auf der linken Seite). Es ist der geeignete Weg, um die für Sie bearbeitete Antwort anzuzeigen, und erhöht die Chancen, dass Sie in Zukunft gute Antworten erhalten. –

1

In dieser Zeile denkt der Python-Interpreter, dass Sie versuchen, ein Argument für fibonacci anzugeben.

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

Am einfachsten ist es, es zu trennen. Sie müssen auch als int werfen, weil Eingang einen String zurückgibt:

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

Sie typecasting für Ihren 'Input' Funktion verwenden müssen, wie folgt tun:

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

OR tun wie folgt aus:

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