为什么会出现此错误?不会出现此错误

时间:2020-07-09 12:29:48

标签: python python-3.x pylint

请告诉我为什么会收到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]

3 个答案:

答案 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 时说:“当序列类型使用无效类型建立索引时使用。有效类型是使用索引方法的整数,切片和对象。”

希望这可以帮助您支持其他答案:)