Python 3.x Python中的基本岩石剪纸。只有玩家2赢了

Python 3.x Python中的基本岩石剪纸。只有玩家2赢了,python-3.x,Python 3.x,这个程序是一个石头剪纸的模拟。有两名玩家,每个人输入r、p或s(小写或大写)。该程序然后让玩家知道谁赢了基于正常的rps规则。共有5轮,它打印每一场比赛的结果以及赢得的比赛总数 我的问题是,无论发生什么情况,它都只会将玩家2视为赢家。我意识到很多东西都可以用更好的方式编写,但我只是刚刚开始,不想对代码做太多修改。我只是想让它工作。非常感谢 print("Hello! We're gonna play a few games of Rock, Paper Scissors.") def rp

这个程序是一个石头剪纸的模拟。有两名玩家,每个人输入r、p或s(小写或大写)。该程序然后让玩家知道谁赢了基于正常的rps规则。共有5轮,它打印每一场比赛的结果以及赢得的比赛总数

我的问题是,无论发生什么情况,它都只会将玩家2视为赢家。我意识到很多东西都可以用更好的方式编写,但我只是刚刚开始,不想对代码做太多修改。我只是想让它工作。非常感谢

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!')

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

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

返回“2”的条件将永远不会计算-因为您从上一个条件复制了它而没有更改它。因此2永远不会匹配


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

如前所述,您只比较大写字母;您使用的
不正确。(请参阅);14分钟内不能投票以dupe结束。返回2的条件实际上已更改;player1和player2被交换。如果你只输入大写字母,OP的代码实际上工作得很好。很好,我没看到。谢谢Paul和Wooble!