Python中的基本岩石剪刀。只有玩家2获胜

时间:2014-02-03 23:38:57

标签: python-3.x

这个程序是一个石头剪刀模拟。有两个玩家,每个玩家都输入r,p或s(小写或大写)。然后程序让玩家根据正常的rps规则知道谁赢了。有5轮,它打印每个单独游戏的结果和赢得的游戏总数。

我的问题是,无论如何,它只是评估玩家二是胜利者。我意识到很多可以用更好的方式编写,但我刚开始并且不想太多地改变代码。我只是想让它发挥作用。非常感谢!

print("Hello!  We're gonna play a few games of Rock, Paper Scissors.")


def rpsGame():
    def rps():

        player1=input('R, P or S?')
        player2=input('R, P or S?')

        if player1==player2:
            return 0
        if (player1==('R'or'r')and player2==('S'or's'))or(player1==('S'or's')and player2==('P'or'p'))or(player1==('P'or'p')and player2==('R'or'r')):
            return 1
        if (player2==('R'or'r')and player1==('S'or's'))or(player2==('S'or's')and player1==('P'or'p'))or(player2==('P'or'p')and player1==('R'or'r')):
            return 2

    result=rps()
    return result


numWinsP1=0
numWinsP2=0


for i in range(5):
    result=rpsGame()
    if result==0:
        print('Nobody wins')
    elif result==1:
        numWinsP1=numWinsP1+1
        print('Player 1 wins.')
    else:
        numWinsP2=numWinsP2+1
        print('Player 2 wins.')
    print("Scores after this play:  Player 1:",numWinsP1,"   Player 2:",numWinsP2)

print('Thanks for playing!')

1 个答案:

答案 0 :(得分:1)

一些注意事项 - 在开始比较之前尝试在输入变量上使用.lower()...然后你可以跳过资本化阶段。

如上所述,如果rps()与你的一个案例不匹配,它就不会返回任何内容,如果它返回None,你将在主函数中点击Else子句(导致玩家2获胜)

返回“2”的条件永远不会评估 - 因为您从先前条件复制它而不更改它。因此2永远不会匹配...

您的主要问题必须在比较行中 - 尝试删除“或”部分并查看是否可以使其工作:)