2

我打开一个终端并 cd 进入我的文档,其中有一个名为 trianglearea.py 的 .py 文件,这是一个我正在尝试执行的非常基本的程序。我在 shell 中输入 /Documents$ python trianglearea.py 并没有任何反应;bash 提示我输入另一个命令,就好像我刚才提示的内容不存在一样。我尝试 ./trianglearea.py 但我收到语法错误,因为我没有输入交互式 python 并且 bash 不理解我的 python 脚本。如果我转到文件 gui 样式并双击并说在终端中运行,一个窗口会闪烁并消失,但这不是我想要的。我想让我的小程序在交互式 python 中运行,这样我就可以输入内容并实际使用我的函数。这就是我在 .py 文件中的全部内容

def area(base,height):
    ''' (number, number) - number
    Return area of a triangle with dimensions base * height

    >>>>area(10,5)
    25.0
    '''
    return base*height/2

我知道这不应该那么难,但它难倒了我。

4

2 回答 2

5

什么也没发生的原因是因为你没有在你的脚本中调用你的方法,所以文件只是定义了方法然后退出。这是一个快速修复:

def area(base,height):
    ''' (number, number) - number
    Return area of a triangle with dimensions base * height

    >>>>area(10,5)
    25.0
    '''
    return base*height/2

print area(10,5) # calling the method

解决此问题的正确方法是添加此检查:

if __name__ == '__main__':
    print area(10,5)

从命令行运行 Python 脚本时,特殊变量__name__设置为字符串'__main__'(有关更多信息,请参阅此答案)。该 if 语句本质上是说,“如果我从命令行运行,请使用参数 10 和 5 执行方法区域并打印结果。”

最后,为了确保您的脚本可以像这样从提示符运行./myscript.py,您需要告诉您的 shell 如何执行它。这是通过在文件顶部添加shebang 行来完成的。

结合所有这些,您的文件如下所示:

#!/usr/bin/python

def area(base,height):
        ''' (number, number) - number
        Return area of a triangle with dimensions base * height

        >>>>area(10,5)
        25.0
        '''
        return base*height/2

if __name__ == '__main__':
    print area(10,5)
于 2013-02-09T08:14:58.220 回答
1

假设如果您的脚本文件名是,mycode.py那么您可以使用python -i mycode.py

$ python -i mycode.py
>>> area(10, 5)   

-i 当脚本作为第一个参数传递或使用 -c 选项时,在执行脚本或命令后进入交互模式。参考

于 2013-02-09T08:19:37.907 回答