Python 3.x Python中的基本岩石剪纸。只有玩家2赢了
这个程序是一个石头剪纸的模拟。有两名玩家,每个人输入r、p或s(小写或大写)。该程序然后让玩家知道谁赢了基于正常的rps规则。共有5轮,它打印每一场比赛的结果以及赢得的比赛总数 我的问题是,无论发生什么情况,它都只会将玩家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
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!