2012-11-12 28 views
2

使用python的新手需要幫助弄清楚爲什麼我的命令行正在吐出巨大的數字串,而不是我傳入的var的fib序列。這裏是我到目前爲止:奇怪的輸出運行一個斐波那契數列

import sys 

def fib(n): 
    a, b = 0, 1 
    while a < n: 
     print a 
     a, b = b, a+b 

if __name__ == "__main__": 
    fib(sys.argv[1]) 

我沒有sys.argv中現在擺在[1]或[1:]我能夠把序列中的N達到我想要的號碼。即如果我輸入n作爲12,我會得到0,1,1,3,5,8,這是正確的。不過,我無法得到這個工作。我在def fib(n)後做了一個打印語句:as print n。它會返回我的sys.argv傳入。

我在哪裏出錯了?謝謝你的時間。

回答

6

不要忘記輸入參數(字符串)轉換爲整數類型:

fib(int(sys.argv[1])) 
+1

謝謝你做的工作,我會關閉問題來分鐘8.如果我可能打擾你夠了,爲什麼我需要指定它是一個整數,而不是讓Python自己假設,如果我通過值?它是否看到程序的名稱,然後是我傳入的字符串? – camihan

+1

@camihan在所有具有接收命令行參數的機制的編程語言中,它們都以'string'類型的形式傳遞。反思一下,Python沒有辦法知道什麼數據類型被作爲參數傳遞(它是「1」,「1」還是「1.0」)?所以它假定它們都是字符串,而程序員的任務是將它們轉換爲適當的數據類型。 –

+0

非常感謝你。 – camihan

1

嘗試fib(int(sys.argv[1])),這可能是問題,但我沒有嘗試。

+0

這是修復,非常感謝我的好先生。 – camihan