我想模拟一个石头剪刀布游戏,这就是我到目前为止所掌握的.这不是让我在scoregame函数中输入字母.我该如何解决?
I'm suppose to simulate a rock paper scissors game and this is what I have so far. It's not letting me input letters into the scoregame function. How can I fix this?
def scoregame(player1, player2): if player1 == R and player2 == R: scoregame = "It's a tie, nobody wins." if player1 == S and player2 == S: scoregame == "It's a tie, nobody wins." if player1 == P and player2 == P: scoregame = "It's a tie, nobody wins." if player1 == R and player2 == S: scoregame = "Player 1 wins." if player1 == S and player2 == P: scoregame = "Player 1 wins." if player1 == P and player2 == R: scoregame = "Player 1 wins." if player1 == R and player2 == P: scoregame == "Player 2 wins." if player1 == S and player2 == R: scoregame == "Player 2 wins." if player1 == P and player2 == S: scoregame = "Player 2 wins." print(scoregame)推荐答案
您需要针对字符串进行测试;您现在正在针对变量名进行测试:
You need to test against strings; you are now testing against variable names:
if player1 == 'R' and player2 == 'R':但是您可以通过测试两个玩家是否相等来简化他们选择相同选项的情况:
but you can simplify the case where both players picked the same option by testing if they are equal:
if player1 == player2: scoregame = "It's a tie, nobody wins."接下来,我将使用一个映射,一个字典来整理出什么胜过什么:
Next, I'd use a mapping, a dictionary, to codify what beats what:
beats = {'R': 'S', 'S': 'P', 'P': 'R'} if beats[player1] == player2: scoregame = "Player 1 wins." else: scoregame = "Player 2 wins."现在您的游戏可以通过2个测试进行测试.全部放在一起:
Now your game can be tested in just 2 tests. All put together:
def scoregame(player1, player2): beats = {'R': 'S', 'S': 'P', 'P': 'R'} if player1 == player2: scoregame = "It's a tie, nobody wins." elif beats[player1] == player2: scoregame = "Player 1 wins." else: scoregame = "Player 2 wins." print(scoregame)