我做了一个小的“控制台”,用split()
分割了命令。我将“命令”(input()
中的第一个“单词”)与第一个单词之后的“参数”分开。这是生成错误的代码:
cmdCompl = input(prompt).strip().split()
cmdRaw = cmdCompl[0]
args = addArgsToList(cmdCompl)
[addArgsToList()
功能:
def addArgsToList(lst=[]):
newList = []
for i in range(len(lst)):
newList.append(lst[i+1])
return newList
我尝试将cmdRaw
之后的每个单词添加到args
返回的名为addArgsToList()
的列表中。但是我得到的却是:
Welcome to the test console!
Type help or ? for a list of commands
testconsole >>> help
Traceback (most recent call last):
File "testconsole.py", line 25, in <module>
args = addArgsToList(cmdCompl)
File "testconsole.py", line 15, in addArgsToList
newList.append(lst[i+1])
IndexError: list index out of range
我不知道为什么得到IndexError
,因为据我所知,newList
可以动态分配。
有帮助吗?
[您在做时:
for i in range(len(lst)):
newList.append(lst[i+1])
最后一次迭代尝试访问超出范围的lst
处的len(lst)
。
您应该这样做:
def addArgsToList(lst=[]):
newList = []
for i in range(len(lst)):
newList.append(lst[i])
return newList
如果您只是尝试复制新列表中的元素,请执行以下操作:
newList = lst.copy()