Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 巨蟒中的石头、纸、剪刀、斯波克、蜥蜴,玩家2自动获胜_Python_Loops_If Statement - Fatal编程技术网

Python 巨蟒中的石头、纸、剪刀、斯波克、蜥蜴,玩家2自动获胜

Python 巨蟒中的石头、纸、剪刀、斯波克、蜥蜴,玩家2自动获胜,python,loops,if-statement,Python,Loops,If Statement,作为一个练习,我们需要重现大爆炸理论成员玩的游戏:石头、纸、剪刀、斯波克、蜥蜴。我几乎完全重新创建了它,唯一的问题是:玩家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]

作为一个练习,我们需要重现大爆炸理论成员玩的游戏:石头、纸、剪刀、斯波克、蜥蜴。我几乎完全重新创建了它,唯一的问题是:玩家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!")
导入系统 t=len(系统argv) 如果(t<2或t>3): 打印(“用法:rpsls.py symbool1 symbool2”) 退出() i=1 而(i>0): a=sys.argv[1] b=sys.argv[2] a=a.下() b=b.下() 如果(a!=“岩石”和a!=“纸张”和a!=“剪刀”和a!=“蜥蜴”和a!=“斯波克”): 打印(“那是什么?请使用真实的符号!”) 埃利夫(b!=“岩石”和b!=“纸”和b!=“剪刀”和b!=“蜥蜴”和b!=“斯波克”): 打印(“那是什么?请使用真实的符号!”) 其他: 如果(a=“纸”和b=“剪刀”): s=真 i=0 其他: s=假 i=0 如果(a==“纸张”和b==“岩石”): s=真 i=0 其他: s=假 i=0 如果(a==“岩石”和b==“蜥蜴”): s=真 i=0 其他: s=假 i=0 如果(a==“蜥蜴”和b==“斯波克”): s=真 i=0 其他: s=假 i=0 如果(a==“spock”和b==“剪刀”): s=真 i=0 其他: s=假 i=0 如果(a==“剪刀”和b==“蜥蜴”): s=真 i=0 其他: s=假 i=0 如果(a==“蜥蜴”和b==“纸”): s=真 i=0 其他: s=假 i=0 如果(a==“纸张”和b==“纸片”): s=真 i=0 其他: s=假 i=0 如果(a==“斯波克”和b==“岩石”): s=真 i=0 其他: s=假 i=0 如果(a==“岩石”和b==“剪刀”): s=真 i=0 其他: s=假 i=0 如果(a==b): 打印(“这是一条领带!”) i=0 退出() 如果(s==真): 打印(“玩家1获胜!”) 如果(s==False): 打印(“玩家2获胜!”)
每个if语句都有一个else。if语句中只有一个可以为true,因此这意味着所有其他语句都将被计算。其结果是最后一个else语句(将s设置为False)将“获胜”,因此玩家2获胜

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

除了倒数第二条,你可以忽略所有的if语句,所以如果a是摇滚乐,b是剪刀,那么可能会让玩家一个winhow我怎么能让它忽略所有其他的呢?你已经是了,你在倒数第二条if语句中重新分配s和i的值,另外请注意,你的一个条件检查是针对
剪刀的
,就像你可以写的一般提示一样-a不在[“石头”,“纸”…]中,你可以忽略你的所有if语句,除了倒数第二个,所以如果a是石头,b是剪刀,它可能会让玩家一winhow我可以让它忽略所有其他的吗?你已经是了,你在倒数第二个if语句中重新分配s和i的值,同时注意你对剪刀的一个条件检查,就像你可以写的一般提示一样-a不在[“石头”、“纸”…]中,你可以忽略除倒数第二个之外的所有if语句,因此,如果a是石头,b是剪刀,那么可能会让玩家一个winhow我可以让它忽略所有其他的吗?你已经是了,你在倒数第二个if语句中重新分配了s和i的值,还请注意你的一个条件检查与
剪刀
,就像你可以写的一般提示一样-a不在[“石头”,“纸”…]你可以忽略所有的if语句,除了倒数第二个,所以如果a是rock,b是scissor,那么可能会让玩家1 Win忽略其余的?你已经忽略了,你在倒数第二个if语句中重新分配了s和i的值,另外,请注意,您的一个条件检查与
剪刀
,正如您可以编写的一般提示一样-a不在[“岩石”、“纸”…]中,最好我也嵌套了if,这样op就不必继续评估a是否等于纸:)因此,将所有if更改为elif,并在