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