我正在用Python编写一个摇滚剪刀游戏,我对下面的结果非常满意,直到我注意到我得到了下面的“无效答案”的情况:
player1 =p和player2 =s
player1 =s和player2 =r
我不明白为什么对于下面的代码逻辑,这些情况不起作用。同样字母的其他组合对两位玩家都很好。
我做错什么了?
(我在用朱庇特做蟒蛇)
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:")发布于 2021-08-04 15:22:08
问题是,对于应该返回"Player 2 wins“(例如player1=="s”和player2=="r")的结果,无效的if块匹配:
player1 != "r" or
player1 != "s" or
player1 != "p" or
player2 != "r" or
player2 != "s" or
player2 != "p"你可能是说
( player1 != "r" and player1 != "s" and player1 != "p" )
or ( player2 != "r" and player2 != "s" and player2 != "p" )或者,更多的丙酮:
player1 not in ["s", "p", "r"] or player2 not in ["s", "p", "r"] 发布于 2021-08-04 15:27:48
elif(
player1 != "r" or
player1 != "s" or
player1 != "p" or
player2 != "r" or
player2 != "s" or
player2 != "p"
):这个代码块需要一行为True,才能使整个elif变为true。
如果是player1 == 's',代码会说"s不等于r“,因此‘or’-语句的列表必须是True。
发布于 2021-08-04 15:30:45
在最后一个elif中,您正在测试player1或player2是否与您接受的答案不同。
if (player1 != "r" or player1 != "s"...)这是真的,因为如果它是"r“,它不是"s",如果是"s”,那么它就是!= "r“等等。
如果和不属于任何一个thiese,那么在测试时应该使用它而不是OR。用和和替换那些或,你应该会没事的。
https://stackoverflow.com/questions/68653853
复制相似问题