2016-12-24 57 views
-2

我遇到了讓while循環工作的問題。我使用next = y命令來啓動程序,但是在我編寫的結尾(next == y)再次運行main函數時,這個位似乎不起作用。即使我輸入'n'或任何不是'y'的東西,函數仍然會重複。我的想法是,最初的next = y覆蓋了所有內容,但我似乎無法刪除此代碼,否則代碼只會運行並且沒有任何代碼運行。爲什麼我的while循環不起作用

next = "y" 



def main(): 

      operator = input("Select a function and press enter (+, - , *, /) ") 


      if(operator != "+" and operator != "-" and operator != "*"and operator >!= "/"): 
     print(input("You must enter a valid operator ")) 
         else: 
     val1 = int(input("Select value 1 ")) 
     val2 = int(input("Select value 2 ")) 

    if(operator == "+"): 
     print(add(val1, val2)) 
    elif(operator == "-"): 
     print(sub(val1, val2)) 
    elif(operator == "*"): 
     print(mult(val1, val2)) 
    else: 
     print(div(val1, val2)) 

next = (input("Would you like to do another calculation? (y/n): ")) 

while(next == "y"): 
    main() 

我認爲這是一個簡單的修復,但我不知道如何做到這一點。

+6

能否請你糾正代碼段的縮進?很難理解「main」和「outside」之外的內容。 – FlipTack

回答

0

聲明

next = (input("Would you like to do another calculation? (y/n): ")) 

需要在while循環內的舉動。事實上,它只被設置一次。 (你應該只看到提示一次。)

1

接下來是你的主函數中的局部變量。您可以將其設置爲全局(壞習慣),也可以在main函數的末尾添加return next。那麼你需要做這樣的事情在你的循環:

while next == 'y': 
    next = main() 
+0

我沒有在'main'的主體中看到'next'。 – sfjac

+1

@sfjac我承認一些關於縮進的東西,不可否認,這顯然是關閉的。 –

+0

主內部的縮進確實令人驚歎...... :) – sfjac

1

首先,你應該注意到,next是一個變量名一個糟糕的選擇,因爲它覆蓋內置函數next - 考慮像user_choice等。

總之,這裏是如何你的代碼的結構也許應該是:

def main(): 
    # Do calculations 

choice = 'y' 
while choice == 'y': 
    main() 
    choice = input("Would you like do another calculation? (y/n): ") 

每次main()完成後,用戶被要求輸入y/n,循環結束。如果選擇是y,它會再次運行 - 否則,它將退出循環。

0

接下來是Python中的內置函數。首先選擇一個正確的變量名是一個好習慣。您可以更改另一個名稱旁邊的變量名稱。

while(next == "y"): 
    main() 
    **next = (input("Would you like to do another calculation? (y/n): "))** 

所以,當你運行程序第一次:

第1步:選擇一個功能,然後按回車

步驟2,如果你問用戶的選擇,而循環後,你的程序將工作做好:選擇值1

步驟3:選擇值2

步驟4:打印的功能

第5步:你願意做的另一個計算

第6步:如果y,則轉到步驟1,否則退出程序

相關問題