2011-08-29 67 views
0

我確信這很簡單,但我無法在任何地方找到答案。比方說,我有這個簡單的溫度轉換程序ConversionSelector.py看起來像在Mac OS X上使用Python入門,但在使用GUI時遇到問題

# 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啓動器)。

現在,當我打開Windows並鍵入select()時,它確實顯示菜單,並從兩種轉換方法中進行選擇。在Mac Python Shell中輸入相同的給了我這個錯誤:

回溯(最近通話最後一個): 文件「」,1號線,在 選擇() NameError:名字「選擇」沒有定義

我知道這可能是非常簡單的事情,我沒有做。任何幫助將不勝感激。

+0

你打字之前導入上述文件''在shell()中進行選擇?你怎麼輸入它? – geoffspear

+0

好吧,它看起來像我不知道如何導入文件。 –

回答

1

添加到您的文件的底部:

if __name__ == '__main__': 
    select() 

這將使python ConversionSelector.py運行你的選擇功能。這裏發生的是__name____main__直接調用你的腳本時,所以你需要告訴解釋器運行你的主函數。

或者,您可以從解釋器導入您的模塊。在與您的ConversionSelector.py文件相同的目錄中運行python。然後運行:

import ConversionSelector 
ConversionSelector.select() 

你也可以用-i選項運行python。運行python -i ConversionSelector.py將導入您的模塊並將其全部名稱插入到全局名稱空間中,以便您可以運行select()

+0

好極了!這工作,但爲了學習的目的,我想知道其他方式來運行程序。任何其他選項? –

+0

增加了一些額外的信息。不確定你在找什麼。 – jterrace

+0

太棒了。謝謝 –

1

當你這樣做:

$ python ConversionSelector.py 

的Python只運行該文件。由於函數定義是文件中唯一的代碼,因此不會發生任何可見的情況。如果你想加載文件,然後進入交互模式,你需要-i標誌:

$ python -i ConversionSelector.py 

希望這有助於。

+0

這工作以及謝謝 –

0

它不應該做任何事情。你只是定義功能。你沒有打電話(因此運行)他們。您可以在文件底部添加主程序邏輯。這是一個很好的做法,以檢查模塊正在運行的主程序(蟒蛇ConversionSelector.py)或進口:

if __name__ == '__main__': 
    # main logic goes here 

的代碼,而不是評論,如果它導入到一些不會得到extecuted其他文件或交互式shell。如果要在shell中「播放」,只需在存儲文件的目錄中運行它(shell,使用python命令),並輸入import ConversionSelector。這應該導入模塊和您定義的所有功能。您可以將它們稱爲ConversionSelector.function_name()。我建議閱讀/看這個:

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

+0

非常感謝你 –