正确比较函数输出

时间:2016-05-09 15:42:43

标签: python

我已经在Python 2.7中编写了Rock-Scissor-Paper游戏的基础,如下所示:

  1 #!/bin/py
  2 #Python 2.7.6
  3 from random import choice
  4 
  5 moves = ["r", "p", "s"] # Possible moves  
  6 winning_combos = {("r", "s"), ("s", "p"), ("p", "r")} # Winning   outcomes 
  7 
  8 def human():
  9         print
 10         print "R: Rock    P: Paper    S: Scissor"
 11         print
 12         human_move = raw_input("Enter your choice: ").lower()
 13         return human_move
 14 ()
 15 
 16 def bot():
 17         bot_move = choice(moves)
 18         return bot_move
 19 ()
 20 
 21 while True:
 22         human(), bot()
 23         if human() == bot():
 24                 print "Grr... a tie!"
 25         elif (human(), bot()) in winning_combos:
 26                 print "Woo-hoo! You win this round, human"
 27         else:
 28                 print "Bwahahaha! The almighty bot wins!"

我的问题是,如果有的话,我可以比较人类()和机器人()函数的结果,正如我在第25行中所​​做的那样?当这个程序按原样运行时,在比较完成之前,系统会提示我输入两次输入。

我可以用不同的方式编写这个程序以产生可接受的结果,所以我不打算重写程序。我具体地说,虽然可能没有效果,但是询问如何调整这个程序(我对Python来说相当新),以及理解我做错了什么。谢谢!

1 个答案:

答案 0 :(得分:1)

您的问题是,每次需要访问该值时,您都在调用humanbot。将结果存储在变量中,如下所示:

while True:
        human_move, bot_move = human(), bot()
        if human_move == bot_move:
                print "Grr... a tie!"
        elif (human_move, bot_move) in winning_combos:
                print "Woo-hoo! You win this round, human"
        else:
                print "Bwahahaha! The almighty bot wins!"