2016-11-20 7 views
0

フィボナッチ数を見つけるためのコードを見つけました。入力がフィボナッチ数でない場合、プログラムは最も近い数値を出力します。次に、シリーズ内のその番号の位置を決定する方法は? N = 8場合と同様に、それは位置の出力が、私は、インデックスのようにあなたにインデックスを与えるPython(フィボナッチ数の位置)

def fibs(): 
    a,b = 0,1 
    yield a 
    yield b 
    while True: 
     a,b = b,a+b 
     yield b 

def nearest_fib(n): 
    # If n is a Fibonacci number return Yes and n 
    # Otherwise, return No and the nearest Fibonacci number 

    n = int(input("Please enter an integer:")) 
    for fib in fibs(): 
     if fib == n: 
      return print("Yes! your integer is an fibonacci number") 
     elif fib < n: 
      prev = fib 
     else: 
      # Is n closest to prev or to fib? 
      if n - prev < fib - n: 
       return print("No! Your answer is not a fibonacci number"), prev 
      else: 
       return print("No! Your answer is not a fibonacci number"), fib 

for i in range(1): 
    print(i,nearest_fib(i)) 

答えて

1

使用enumerateを、整数に適用されないというインデックスを使用しようとしましたが、Pythonの状態7であるので、第七ですあなたが現在prevを保存

for ind, fib in enumerate(fibs()): 

ストアインデックスの両方と値::私は試みたが、あまりにも多くの出力がある

def fibs(): 
    a,b = 0,1 
    yield a 
    yield b 
    while True: 
     a,b = b,a+b 
     yield b 

def nearest_fib(n): 
    #If n is a Fibonacci number return Yes and n 
    #Otherwise, return No and the nearest Fibonacci number 

    for ind, fib in enumerate(fibs()): 
     if fib == n: 
      print("Yes! your integer is fibonacci number #%d" % (ind + 1)) 
      return n 
     elif fib < n: 
      prev_index = ind 
      prev = fib 
     else: 
      # Is n closest to prev or to fib? 
      if n - prev < fib - n: 
       print("No! Your answer is not a fibonacci number. It is closest to number #%d" % (prev_index + 1)) 
       return prev 
      else: 
       print("No! Your answer is not a fibonacci number. It is closest to number #%d" % (prev_index + 2)) 
       return fib 

for i in range(10): 
    n = int(input("Please enter an integer:")) 
    print(n,nearest_fib(n)) 
+0

も値として。ここでもっと指導してもいいですか?私はforループの前に次のコードを含める、列挙型(fibs()): print(i、fib) – Tammy