在索引列表分配中获取错误?

时间:2018-02-05 11:34:31

标签: python-3.x list index-error

我最近开始学习Python,当我试图从书中运行代码时(我的修改)我得到了错误:

IndexError: list assignment index out of range
in : `Names[len(Names)]=name`

我在网上看到了一些关于此错误的问题,但无法弄明白。

Names=[]
num=0
name=''
while True :

    print('Enter the name of person '+str(len(Names)+1) + '(or Enter nothing to stop)')
    name=input()

    if name == '' :
        break

    Names[len(Names)]=name
print('the person names are:')

for num in range(len(Names)+1) :
    print('   '+Names[num])

3 个答案:

答案 0 :(得分:1)

您希望将某些内容附加到现有列表中。为什么不使用.append()?这不会给你IndexError。

Names.append(name)

另一个相同的错误:你不应该写range(len(Names) + 1)range(len(Names))足以让您遍历整个列表:

for num in range(len(Names)):
    print('   '+Names[num])

另一个建议:你不需要for循环来打印结果 at all 。只需使用str.join()

print('   '.join(Names))

答案 1 :(得分:0)

您无法访问超出范围的索引 例如:

>>> l = [1,2,3]
>>> l = [0,1,2]
>>> l[3] = "New"

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    l[3] = "New"
IndexError: list assignment index out of range

为此,您必须append list新数据。

>>> l.append("new")
>>> l
[0, 1, 2, 'new']

您可以尝试:

Names=[]
num=0
name=''
while True :

    print('Enter the name of person '+str(len(Names)+1) + '(or Enter nothing to stop)')
    name=input()

    if name == '' :
        break

    Names.append(name)
print('the person names are:')

for num in range(len(Names)) :
    print('   '+Names[num])

答案 2 :(得分:0)

只需使用append函数将新名称插入现有名称列表。

语法: -

如果你想追加&#39; foo&#39;在现有名称列表中输入名称&#39;输入 Names.append(&#39; foo&#39;)