我正在用Python开发一个石头剪纸游戏,我对下面的结果非常满意,直到我注意到我得到了以下“无效答案”案例:
player1=p和player2=s
player1=s和player2=r
关于下面的代码逻辑,我不明白为什么这些案例不起作用。其他字母相同的组合对两个玩家都适用
我做错了什么
(我正在使用Python上的jupyter)
scoreP1 = 0
scoreP2 = 0
game = True
while game != 'QUIT':
player1 = input("\nJanken! Player 1, type 'r' for Rock, 'p' for Paper or 's' for Scissor: ")
player2 = input("Janken! Player 2, type 'r' for Rock, 'p' for Paper or 's' for Scissor: ")
if(
(player1=="r" and player2=="s") or
(player1=="p" and player2=="r") or
(player1=="s" and player2=="p")
):
print("\nPlayer 1 wins! Congrats! Updating scores...")
scoreP1+=1
print("Score player 1:",scoreP1)
print("Score player 2:",scoreP2)
elif(
player1==player2
):
print("\nTie! Updating scores...")
print("Score player 1:",scoreP1)
print("Score player 2:",scoreP2)
elif(
player1 != "r" or
player1 != "s" or
player1 != "p" or
player2 != "r" or
player2 != "s" or
player2 != "p"
):
print("\nNot a valid answer. Please type 'r' for Rock, 'p' for Paper or 's' for Scissor.")
else:
print("Player 2 wins! Congrats! Updating scores...")
scoreP2+=1
print("Score player 1:",scoreP1)
print("Score player 2:",scoreP2)
game = input("\nAnother game? Type 'QUIT' to end this, or anything else to continue:")
在上一次elif中,您正在测试player1或player2是否与您接受的答案不同
这是真的,因为如果它是“r”,它就不是“s”,如果它是“s”,那么它就是“r”等
如果不属于上述任何一种情况,则应在测试时使用和,而不是或。 用AND替换这些或,您应该会没事的
此代码块要求其中一行为True,以使整个elif为True
如果
player1 == 's'
,代码会说“s不等于r”,因此这个'or'-语句列表必须为True问题在于,对于应返回“玩家2赢”(例如player1==“s”和player2==“r”)的结果,无效的if块匹配:
你可能是说
或者,更像Python:
相关问题 更多 >
编程相关推荐