2016-04-25 69 views
-2

難以理解while(True)函數應該如何適應代碼。另外不知道如果這是我想循環遊戲,直到計算機或用戶點擊點的所需量使用正確的事(這在一開始的用戶輸入作爲發)不理解While(True)循環 - Python 2.7

import random 


def main(): 

print 
print "----------------------------------" 
print "Welcome to Rock, Paper, Sciccors! " 
print "----------------------------------" 


rounds = input("How many points to win?: ") 

user_choice = input("Choose Rock = 1 , Paper = 2 or Sciccors = 3: ") 

user_score = 0 

computer_score = 0 



if user_choice == 1: 

    print "You chose Rock" 

elif user_choice == 2: 

    print "You chose Paper" 

elif user_choice == 3: 

    print "You chose Sciccors" 

else: 

    print " Wrong! Choose 1, 2 or 3!" 



computer_choice = random.randrange(1, 4) 


if computer_choice == 1: 

    print "Computer chose Rock" 

elif computer_choice == 2: 

    print "Computer chose Paper" 

elif computer_choice == 3: 

    print "Computer chose Sciccors" 


def checkResults(computer_choice, user_choice): 

    checkResults = computer_choice - user_choice 


    if computer_choice - user_choice == 0: 

     print("Draw!") 

     user_score += 1 

     computer_score += 1 

    elif computer_choice - user_choice == 1 or computer_choice - user_choice  == -2: 

     print("Computer wins") 

     computer_score += 1 

    elif computer_choice - user_choice == -1 or computer_choice - user_choice == 2: 

     print("You win!") 

     user_score += 1 


print (" Computer {} , You {}" .format(computer_score, user_score)) 

while(True): 

if computer_score == rounds or user_score == rounds: 

    main() 
else: 
    break 
+0

你可以使用無需語法錯誤的代碼更新答案嗎?最好也刪除很多空行。 – totoro

回答

1

你可以使這個有點短:

while computer_score == rounds or user_score == rounds: 

    ' Your code returning computer_score and user_score 

基本上是一個while True是一個無限循環,只能使用break陳述或通過鍵盤中斷結束。

0

while True:是一個無限循環,只能通過命令break停止。在你的例子中,你創建了一個無限運行main()方法的循環(你之前定義的方法是def main():)。循環結束的唯一時間是如果你終止進程(即在Windows上使用任務管理器),或者如果computer_scoreuser_score都變得不等於rounds(這是你的else語句暗示在倒數第二行)。發生這種情況時,程序調用break,它立即強制結束循環,然後移動到文件末尾(程序結束)。

應該注意的是,使用while True ... break循環有時會被程序員所詬病,因爲它不被視爲「優雅」。這是完全正常的代碼做的,但另一種方式來重新寫的最後幾行如下:

while computer_score==rounds or user_score==rounds: 
    main() 

這通過運行while循環,直到computer_scoreuser_score達到同樣的效果都做不等於rounds。那時候,while循環會自動結束,並通過到達文件末尾來結束程序。