Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mac OS X上开始使用Python,但在GUI上遇到问题_Python - Fatal编程技术网

在Mac OS X上开始使用Python,但在GUI上遇到问题

在Mac OS X上开始使用Python,但在GUI上遇到问题,python,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

我相信这很简单,但我在任何地方都找不到答案。假设我有一个简单的温度转换程序,名为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启动器)

现在,当我打开窗口并键入select()时,它确实会显示菜单,其中包含从两种转换方法中选择的选项。在Mac Python Shell中键入相同的命令会导致以下错误:

回溯(最近一次呼叫最后一次): 文件“”,第1行,在 选择() 名称错误:未定义名称“选择”


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

请将以下内容添加到文件底部:

if __name__ == '__main__':
   select()
这将使
python ConversionSelector.py
运行select函数。这里发生的事情是,当直接调用脚本时,是
\uuuuu main\uuuuu
,因此需要告诉解释器运行主函数

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

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

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

$ python -i ConversionSelector.py

希望这有帮助。

它不应该做任何事情。您只是在定义函数。你不是在呼叫(因此运行)他们。您可以在文件底部添加主程序逻辑。检查模块是否作为主程序(python ConversionSelector.py)运行或导入是一种很好的做法:

if __name__ == '__main__':
    # main logic goes here
如果将代码而不是注释导入到其他文件或交互式shell中,则不会执行该代码。如果您想在shell中“播放”,只需在存储文件的目录中运行它(shell,使用python命令),然后键入importconversionselector。这将导入您定义的模块和所有函数。您可以将它们称为ConversionSelector.function\u name()。我建议您阅读/观看以下内容:


在shell中键入
select()
之前是否导入上述文件?你是如何导入它的?嗯,看起来我不知道如何导入该文件。好的,太好了!这是可行的,但出于学习目的,我想知道运行程序的其他方法。还有其他选择吗?添加了一些额外的信息。不确定你到底在找什么。