2016-04-25 59 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循环会自动结束,并通过到达文件末尾来结束程序。