这个程序是一个石头剪刀模拟。有两个玩家,每个玩家都输入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!')
答案 0 :(得分:1)
一些注意事项 - 在开始比较之前尝试在输入变量上使用.lower()...然后你可以跳过资本化阶段。
如上所述,如果rps()与你的一个案例不匹配,它就不会返回任何内容,如果它返回None,你将在主函数中点击Else子句(导致玩家2获胜)
返回“2”的条件永远不会评估 - 因为您从先前条件复制它而不更改它。因此2永远不会匹配...
您的主要问题必须在比较行中 - 尝试删除“或”部分并查看是否可以使其工作:)