【问题标题】:run python code in vi editor and passing user input在 vi 编辑器中运行 python 代码并传递用户输入
【发布时间】:2014-01-28 22:53:55
【问题描述】:

我想在 vi 编辑器中运行以下代码:

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

我想在 vi 编辑器中运行程序时为值 n 提供运行时输入。我不知道如何在 vi 编辑器中为 python 程序提供运行时用户输入。还想知道在 vi 编辑器中运行代码时需要对代码进行哪些更改。我可以对此有一个解决方案吗?我能够运行代码但无法传递 n 的值。

我在 Putty 中运行它,我正在使用 Python3。

【问题讨论】:

    标签: python user-input vi


    【解决方案1】:

    要在 vi 编辑器中运行代码,请使用:

    :!python code.py arg1
    

    使用 :!在 vi 中,您可以运行任何有效的 shell 命令。此外,您还可以使用此方法将命令行参数 (arg1) 传递给您的 python 代码。

    希望对你有帮助

    【讨论】:

    • 根据您的建议,我无法做到这一点。你能帮我了解更多信息吗?我运行如下:[arindam@n1 course]$ :!python fact1.py factorial(4) :python fact1.py -v factorial(4) fact1.py factorial(4) -bash: syntax error near unexpected token `(' [arindam@n1 课]$
    • @user3068762:不能直接调用函数。看看我的答案,看看你的代码需要改变什么
    【解决方案2】:

    您需要更改您的代码:

    import sys
    
    def factorial(n):
        # your function here
    
    if __name__ == '__main__':
        factorial(int(sys.argv[1]))
    

    当脚本文件执行时,它从if __name__ == '__main__' 开始,你的factorial() 会以命令行参数作为参数调用。

    然后您可以按照 hashbrown 的描述从 vi 中运行此脚本,例如:

    :!python code.py 20
    

    PS:您可能想在调用阶乘函数之前添加一行 print(sys.argv),只是为了了解 sys.argv 实际包含的内容(为什么使用索引 1int())。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多