2012-06-05 53 views
-1

我是Python的新手,我試圖弄清楚爲什麼我的程序不會跑過最初的輸入。一切正常,直到我輸入一個數字。然後它回到程序的開始。起圈聲明如下所示:雖然循環不會繼續如果語句

loop = 1 
choice = 0 
while loop == 1: 
    choice = menu() 
    if choice == 1: 
     (List of commands) 
    elif choice == 2: 
     (List of commands) etc... 
    elif choice == 5: 
     loop = 0 

我是個菜鳥,所以我敢肯定,這是一個荒謬的問題,但我只是難倒!

+0

等等......實際上並不在程序中! –

+0

你如何輸入數字?如果'menu()'給出'choice'' 5,它肯定會退出循環。 – xvatar

+0

如果選擇以字符串形式返回(「5」),那麼它不等於5,因此不會退出。很大程度上取決於菜單()的外觀。 –

回答

0

TypeError: can't multiply sequence by non-int of type 'str'表示你乘這樣'5'*'5',它們是str,但不是int 5 * 5。

'1'+'1' = '11'1 + 1 = 2

所以,你應該改變海峽INT

0
NO_ACTION, SMTH_ACTION, SMTH_OTHER_ACTION, EXIT_ACTION = 0,1,2,3 
choice = NO_ACTION 
while True: 
    choice = int(menu()) # python strong typed! 

    if choice is SMTH_ACTION: 
     (List of commands) 

    elif choice is SMTH_OTHER_ACTION: 
     (List of commands) etc... 

    elif choice is EXIT_ACTION: 
     break 

需要任何出口標誌 - 使用break關鍵字。 不要使用「幻數」 - 定義常量。

+0

'DEF添加(A,B): 打印(一, 「+」,B, 「=」,(A + B) #此減去兩個數字給出 DEF子(A,B): 打印( (a,b): #這個數字乘以給定的兩個數字。 b) #此劃分給定 DEF DIV(A,b)的兩個數字: 打印(一, 「/」,b, 「=」,A/b)' 所以我應該沒有定義像我的功能那麼,我應該這樣做 'NO_ACTION,SMTH_ACTION,等= 0,1,2,3',它會採取每一個並將其與相應的編號鏈接。 NO_ACTION = 0 SMTH_ACTION = 1等等,再次抱歉成爲noob!通過試驗和錯誤學習! –

+0

對不起草的代碼,它沒有按照我的預期發佈! –

+0

@Jeremy Smith,把函數的描述放到[docstrings](http://www.python.org/dev/peps/pep-0257/):) – astynax