不了解While(True)循环 - Python 2.7

时间:2016-04-25 18:14:04

标签: python-2.7 while-loop

很难弄清楚如何在代码中安装while(True)函数。也不知道这是否正确使用,因为我试图循环游戏,直到计算机或用户达到所需的点数(用户在开始时作为回合输入)

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

2 个答案:

答案 0 :(得分:1)

你可以把它缩短一点:

while computer_score == rounds or user_score == rounds:

    ' Your code returning computer_score and user_score

基本上while True是一个无限循环,只能使用break语句或键盘中断来结束。

答案 1 :(得分:0)

while True:是一个无限循环,只能通过命令break停止。在您的示例中,您创建了一个循环,该循环将无限运行main()方法(您之前定义的方法,通过说def main():)。循环结束的唯一时间是你杀死进程(即在Windows上使用任务管理器),或者computer_scoreuser_score都变得不等于rounds(这就是你的{ {1}}声明暗示倒数第二行)。发生这种情况时,程序会调用else,它会立即强制结束循环并继续...到文件末尾(然后结束程序)。

应该注意的是,程序员有时不赞成使用break循环,因为它不被视为“优雅”。这是完全没问题的代码,但是重写最后几行的另一种方法如下:

while True ... break

通过运行while computer_score==rounds or user_score==rounds: main() 循环直到whilecomputer_score都不等于user_score,才能获得相同的结果。此时,while循环以干净的方式结束,并通过到达文件末尾来结束程序。

相关问题