2014-01-10 68 views
1

我想運行在vi編輯器下面的代碼:運行Python代碼,並通過用戶輸入

def factorial(n): 
    if n <1: # base case 
     return 1 
    else: 
     returnNumber = n * factorial(n - 1) # recursive call 
     print(str(n) + '! = ' + str(returnNumber)) 
     return returnNumber 

我想給的值n運行時輸入運行在vi編輯器程序時。我不知道如何在vi編輯器中爲python程序提供運行時用戶輸入。還想知道在vi編輯器中運行代碼時需要在代碼中進行哪些更改。我能爲此解決嗎?我能夠運行代碼但無法傳遞n的值。

我在膩子中運行這個,我使用的是Python3。

回答

1

從vi編輯器內運行代碼,使用:

:!python code.py arg1 

使用!從vi中你可以運行任何有效的shell命令。此外,您還可以使用此方法將命令行參數(arg1)傳遞到您的Python代碼。

希望這有助於

+0

我無法對您的建議做到這一點。你能幫我提供更多的信息嗎?我正在運行如下所示:[arindam @ n1 lesson] $:!python fact1.py factorial(4) :python fact1.py -v factorial(4)fact1.py factorial(4) -bash:語法錯誤附近意想不到的令牌'(' [arindam @ n1 lesson] $ – user3068762

+0

@ user3068762:你不能直接調用一個函數,看看我的回答,看看代碼中需要改變什麼 – user1251007

1

你需要改變你的代碼:

import sys 

def factorial(n): 
    # your function here 

if __name__ == '__main__': 
    factorial(int(sys.argv[1])) 

當執行腳本文件,它是從if __name__ == '__main__'開始,你factorial()時調用命令行參數作爲參數。只是想問你的階乘函數之前,您可能要添加一行print(sys.argv),只是爲了學習:

然後你可以從六中由hashbrown描述運行此腳本,例如:

:!python code.py 20 

PS什麼sys.argv實際上包含(爲什麼使用索引1int())。

+0

例如':!python my.py M = 10 N = 41',看[這個答案](http://stackoverflow.com/questions/4355721/passing-command-line-argument-to-python-script-within-eclipsepydev/24830122#24830122) – denis