我已经在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来说相当新),以及理解我做错了什么。谢谢!
答案 0 :(得分:1)
您的问题是,每次需要访问该值时,您都在调用human
和bot
。将结果存储在变量中,如下所示:
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!"