给予';语法错误:无效语法';以python 3的格式
我正在尝试创建一个函数,在这个函数中,你输入选项,用户选择一个 Python一直在第6行和第9行给我一条错误消息,格式是 我有python 3.7.4给予';语法错误:无效语法';以python 3的格式,python,format,syntax-error,python-3.7,Python,Format,Syntax Error,Python 3.7,我正在尝试创建一个函数,在这个函数中,你输入选项,用户选择一个 Python一直在第6行和第9行给我一条错误消息,格式是 我有python 3.7.4 def choice(choices, message): print(message) print("Do you want to :") answer = "" for i, x in enumerate(choices): print(f"{i}: {x}") while answer
def choice(choices, message):
print(message)
print("Do you want to :")
answer = ""
for i, x in enumerate(choices):
print(f"{i}: {x}")
while answer > len(choices):
while type(answer) != int:
answer = input(f"Enter a number between 1 - {len(choices)}: ")
try:
answer = int(answer)
except:
pass
choice(["run", "or hide"], "You are being hunted")
我在代码中看到的一个错误是
while answer > len(choices):
您无法判断answer
是否大于choices
的长度,因为answer
是字符串,而len(choices)
是整数。您也没有用任何值填充答案
。要在python中从用户处获取输入,我们可以使用名为input()
的函数。可以替换以下行:
print("Do you want to :")
answer = ""
这一行:
answer = input("Do you want to: ")
此行以字符串形式从用户获取输入,然后将其存储在变量answer
中。然后,我们必须记住在使用变量answer
时使用int()
函数。稍后我会展示这个
另一个是while循环。如果要在while循环中组合条件,则不能将它们作为单独的循环,因为这只会使一个循环位于另一个循环的内部。您可以将条件与单词和
或或
组合在一起。现在循环应该是这样的:
while answer > len(choices) or type(answer) != int:
answer = input(f"Enter a number between 1 - {len(choices)}: ")
try:
answer = int(answer)
except:
pass
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")
但这仍然是不完整的。这里的问题是,在我们知道答案是否为整数之前,它正在测试答案是否大于选项的长度。然后我们必须改变这两个条件
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}: ")
整个代码应该如下所示:
while answer > len(choices) or type(answer) != int:
answer = input(f"Enter a number between 1 - {len(choices)}: ")
try:
answer = int(answer)
except:
pass
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")
请为您的错误提供完整的堆栈。您确定您实际使用的是Python 3.7.4吗?我仍然在print语句(第4行)的最后一个引号处看到错误