def RPS():
userRPS = input("Rock, paper, or scissors? ")
RPSlist = ["rock", "paper", "scissors"]
computerRPS = RPSlist[randint(1,3)]
print("\nI chose " + computerRPS + ", and you chose " + userRPS)
elif userRPS == "scissors":
if computerRPS == "rock":
print("You lose.")
elif computerRPS == "paper":
print("You win.")
elif computerRPS == "scissors":
print("I chose scissors too. Go again.")
RPS()
else:
print("?")
RPS()
所以如果我运行else语句,它会打印超出范围的列表索引。如果用户和随机生成器选择相同的东西,也会发生同样的情况。我试图学习如何解决这个问题,但我真的不明白其中的任何解释。你知道吗
您应该执行randint(0,2),因为RPSList的索引为零。这修复了超出范围的错误,但是您还应该执行“if…else”而不是“elif…else”。你知道吗
一些变化:
应该是
以及
应该是
请记住,列表索引从
0
开始计数,而不是从1
开始计数。你知道吗更好的方法是使用
random.choice
。你知道吗例如
这样你就不用担心名单有多长了。你知道吗
所以那条线变成了
此外,如果没有前面的
if
,则不能有elif
。所以你只需要把elif
改成if
。你知道吗相关问题 更多 >
编程相关推荐