请告诉我为什么会收到Sequence index is not an int, slice, or instance with __index__pylint(invalid-sequence-index)
警告,因为我在下面提供了文件代码。
import random
from ppwiinputs import *
print("This is PPWI\n")
end_chat = False
while end_chat == False:
USER_INPUT = input(">")
if USER_INPUT.lower() in GREETINGS:
print(f"{GREETINGS_RESPONSE[random.randint(0,len(GREETINGS_RESPONSE)-1)]}\n")
elif USER_INPUT.lower() in END:
print(END_RESPONSE[random.randint(0,len(END_RESPONSE)-1)])
quit()
elif not(USER_INPUT.lower() in GREETINGS) or not(USER_INPUT.lower() in END):
print("Can't find an answer to that, still learning.\n")
def grammarCorrection(USER_INPUT):
for n in RESPONSE[range(0,len(RESPONSE)-1)]:
for i in n:
if (USER_INPUT in i) and (USER_INPUT != i):
print(f'do you mean {i}')
我还没有测试过该函数,也没有在代码中的任何地方调用它。我的VSCode开始向我显示此警告,并很想知道这是怎么回事。
ppwiinputs.py文件
GREETINGS_RESPONSE = ['HEY.', 'HOWDY.', 'WASSUP.', 'HI THERE.', "HEY, WHAT'S UP?.", 'NICE TO SEE YOU.', 'GREETINGS AND SALUTATIONS.', 'GREETINGS.']
GREETINGS = ['hi ppwi','hello ppwi','hi', 'hello']
END = ['bye', 'ok, bye', 'bye bye', 'okay bye', 'see you']
END_RESPONSE = ['BYE BYE.', 'NICE MEETING YOU, BYE.', 'BYE.', 'SEE YOU SOON.']
RESPONSE = [GREETINGS_RESPONSE, GREETINGS, END, END_RESPONSE]
答案 0 :(得分:0)
此行for n in RESPONSE[range(0,len(RESPONSE)-1)]:
发出警告。
range
是一个类,返回一个引发警告的对象,因为不建议将其用作列表的索引。
要做您想做的事,您可以简单地用:分割列表:
for n in RESPONSE[:-1]:
答案 1 :(得分:0)
不确定要使用的列表是什么,但是看起来您只想使用RESPONSE
这行来遍历列表for n in RESPONSE[range(0,len(RESPONSE)-1)]:
。
在这种情况下,您可以简单地将其替换为for n in RESPONSE:
。
答案 2 :(得分:0)
首先,请澄清一下。这不是警告,而是错误。我没有运行调用该函数的代码,但是如果有人这样做会得到TypeError。正如其他人回答的那样,之所以发生,是因为您尝试使用 range 对象从列表中获取值,而您不能这样做,因为range对象会在列表上创建迭代的值。飞行,所以它需要其他东西穿越它,例如使用for循环来打印值,与在列表中使用切片不同。
此外,如果您在VSCode中将pylint用作linter,则建议您每次想知道为什么会收到警告或错误时都检查pyling messages,并且会更好地了解发生了什么。例如,搜索错误 invalid-sequence-index 时说:“当序列类型使用无效类型建立索引时使用。有效类型是使用索引方法的整数,切片和对象。” >
希望这可以帮助您支持其他答案:)