在Mac OS X上开始使用Python但是在使用GUI时出现问题

时间:2011-08-29 15:57:47

标签: python

我确信这很简单但我无法在任何地方找到答案。假设我有一个名为ConversionSelector.py的简单温度转换程序,它看起来像

# Helper function to print all menu items:
def displayMenu():
    print 'Temperature Conversions Menu:';
    print '(1) Convert Fahrenheit to Celsius';
    print '(2) Convert Celsius to Fahrenheit';

# Main function to display menu and invoke user-selected conversion:
def select():
    displayMenu();
    choice = input('Enter choice number: ');
    if (choice == 1):
        F2C();
    elif (choice == 2):
        C2F();
    else:
        print 'Invalid choice: ', choice;
    print 'Bye-bye.';

# Convert Fahrenheit temperature to Celsius temperature:
def F2C():
    Fahrenheit  = input('Enter degrees in Fahrenheit: ');
    Celsius     = (5.0 / 9.0) * (Fahrenheit - 32);
    print Fahrenheit, 'Fahrenheit =', Celsius, 'Celsius';

# Convert Celsius temperature to Fahrenheit temperature:
def C2F():
    Celsius     = input('Enter degrees in Celsius: ');
    Fahrenheit  = (9.0 / 5.0) * Celsius + 32;
    print Celsius, 'Celsius =', Fahrenheit, 'Fahrenheit';

我使用Mac但我无法运行它。例如,如果我输入终端 python ConversionSelector.py它什么都不做。 (我安装了IDLE和Python Launcher)。

现在,当我打开Windows并输入select()时,它会显示菜单,可以选择从两种转换方法中进行选择。在Mac Python Shell中输入相同内容会给我带来这个错误:

追踪(最近一次通话):   文件“”,第1行,in     选择() NameError:名称'select'未定义

我知道这可能是一件非常简单的事情。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

将其添加到文件的底部:

if __name__ == '__main__':
   select()

这将使python ConversionSelector.py运行您的选择功能。这里发生的是__name__在直接调用脚本时为__main__,因此您需要告诉解释器运行您的主函数。

或者,您可以从解释器导入模块。在python文件所在的目录中运行ConversionSelector.py。然后运行:

import ConversionSelector
ConversionSelector.select()

您还可以使用-i选项运行python。运行python -i ConversionSelector.py将导入您的模块并在全局命名空间中插入其所有名称,因此您只需运行select()

答案 1 :(得分:1)

执行此操作时:

$ python ConversionSelector.py

Python只运行该文件。由于函数定义是文件中唯一的代码,因此不会发生任何可见的情况。如果要加载文件然后进入交互模式,则需要-i标志:

$ python -i ConversionSelector.py

希望这有帮助。

答案 2 :(得分:0)

它不应该做任何事情。你只是定义功能。你没有打电话(因此跑)他们。您可以在文件底部添加主程序逻辑。检查模块是作为主程序运行( python ConversionSelector.py )还是导入:

是一个很好的做法。
if __name__ == '__main__':
    # main logic goes here

如果将代码导入某个其他文件或交互式shell,则代码不会被扩展。如果你想在shell中“播放”,只需在存储文件的目录中运行它(使用 python 命令),然后输入 import ConversionSelector 。那应该导入模块和你定义的所有函数。您可以将它们称为ConversionSelector.function_name()。我建议阅读/观看此内容:

http://code.google.com/edu/languages/google-python-class/introduction.html