python中的"石头,纸,剪刀,斯波克,蜥蜴",玩家2自动获胜

2024-06-11 22:55:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我们需要重做一个游戏,一个大蜥蜴玩的游戏。我设法几乎完全重建了它,唯一的问题是:玩家2自动获胜。有人能告诉我在哪里需要修改代码并解释原因吗?在

import sys

t = len(sys.argv)

if(t < 2 or t > 3):
    print("Usage: rpsls.py symbool1 symbool2")
    exit()
i = 1
while (i > 0):
    a = sys.argv[1]
    b = sys.argv[2]
    a = a.lower()
    b = b.lower()
    if(a != "rock" and a != "paper" and a != "scissor" and a != "lizard" and a != "spock"):
        print("What's that? please use a real symbol!")

    elif(b != "rock" and b != "paper" and b != "scissor" and b != "lizard" and b != "spock"):
        print("What's that? please use a real symbol!")

    else:
        if (a == "paper" and b == "scissor"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "paper" and b == "rock"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "rock" and b == "lizard"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "lizard" and b == "spock"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "spock" and b == "scissors"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "scissor" and b == "lizard"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "lizard" and b == "paper"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "paper" and b == "spock"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "spock" and b == "rock"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == "rock" and b == "scissor"):
            s = True
            i = 0
        else:
            s = False
            i = 0
        if(a == b):
            print("It's a tie!")
            i = 0
            exit()

if(s == True):
        print("Player 1 wins!")
if(s == False):
        print("Player 2 wins!")

Tags: andfalsetrue游戏ifsysexitelse
1条回答
网友
1楼 · 发布于 2024-06-11 22:55:58

每个if语句都有一个else。只有一个if语句可以为true,因此意味着所有其他else语句都将被求值。结果是最后一个else语句(将s设置为False)将“获胜”,因此玩家2获胜。在

您应该删除所有else语句,并将代码重新构造为一系列if...elif...块:

   if a == "paper" and b == "scissor":
        s = True
        i = 0
   elif a == "paper" and b == "rock":

(注意,如果条件不需要括号。)

相关问题 更多 >