我在你的代码中看到的一个错误是while answer > len(choices):
您无法判断answer是否大于choices的长度,因为answer是一个字符串,len(choices)是一个整数。您还没有用任何值填充answer。为了从python中的用户那里获得输入,我们可以使用一个名为input()的函数。可以替换以下行:
^{pr2}$
用这条线:answer = input("Do you want to: ")
这一行以字符串的形式从用户处获取输入,然后将其存储在变量answer中。我们必须记住在使用变量answer时使用int()函数。我稍后再看这个。在
另一个是while循环。如果要在while循环中组合条件,则不能将它们作为单独的循环,因为这只会使一个循环位于另一个循环中。您可以将条件与单词and或or组合使用。所以现在循环应该是这样的:while answer > len(choices) or type(answer) != int:
answer = input(f"Enter a number between 1 - {len(choices)}: ")
try:
answer = int(answer)
except:
pass
但这还不完整。这里的问题是,它现在正在测试answer是否大于{}的长度,我们甚至还不知道它是否为整数。然后我们必须改变这两个条件。在while type(answer) != int or answer > len(choices):
answer = input(f"Enter a number between 1 - {len(choices)}: ")
try:
answer = int(answer)
except:
pass
现在try是不必要的,所以我们可以删除它,answer = int(answer)是没有意义的,所以我们也删除了它。我们也不需要数字测试条件。我们将以以下循环结束:while answer > len(choices):
answer = input(f"Enter a number between 0 - {len(choices) - 1}: ")
整个代码应该如下所示:def choice(choices, message):
print(message)
for i, x in enumerate(choices):
print(f"{i}: {x}")
answer = input("What do you want to do: ")
while int(answer) > len(choices):
answer = input(f"Enter a number between 0 - {len(choices) - 1}: ")
choice(["run", "or hide"], "You are being hunted")