2024-04-26 22:35:23 发布
网友
a=[] a.append(3) a.append(7) for j in range(2,23480): a[j]=a[j-2]+(j+2)*(j+3)/2
当我写这段代码时,会出现如下错误:
我能知道为什么和如何调试它吗?在
错误的原因是,正如错误消息所说,您试图访问列表中当前超出范围的部分。在
例如,假设您要创建一个10人的列表,并尝试指定该列表中第11个人将是谁。在你的便笺簿上,仅仅为另一个人腾出空间可能很容易,但是运行时对象,比如python中的列表,就不那么宽容了。在
由于以下原因,您的列表一开始是空的:
a = []
然后使用以下代码向其中添加2个元素:
这使得列表的大小刚好可以容纳2个元素,即您添加的两个元素,其索引为0和1(python列表基于0)。在
在代码中,再往下,指定元素j的内容,从2开始,代码会立即爆炸,因为您试图说“对于2个元素的列表,请将以下值存储为第3个元素”。在
j
同样,类似Python中的列表通常也不那么宽容。在
相反,你必须做两件事中的一件:
在你的情况下,你想做nbr。2,这意味着您要重写这行代码:
a[j]=a[j-2]+(j+2)*(j+3)/2
为此:
a.append(a[j-2]+(j+2)*(j+3)/2)
这将在列表的末尾追加一个新元素,这是可以的,而不是尝试为元素N+1分配一个新值,其中N是列表的当前长度,这是不正常的。在
你在添加新的元素,那些还不存在的元素。因此,您需要使用append:由于这些项还不存在,因此不能通过索引引用它们。Overview of operations on mutable sequence types。在
append
for j in range(2, 23480): a.append(a[j - 2] + (j + 2) * (j + 3) / 2)
更改这行代码:
错误的原因是,正如错误消息所说,您试图访问列表中当前超出范围的部分。在
例如,假设您要创建一个10人的列表,并尝试指定该列表中第11个人将是谁。在你的便笺簿上,仅仅为另一个人腾出空间可能很容易,但是运行时对象,比如python中的列表,就不那么宽容了。在
由于以下原因,您的列表一开始是空的:
然后使用以下代码向其中添加2个元素:
^{pr2}$这使得列表的大小刚好可以容纳2个元素,即您添加的两个元素,其索引为0和1(python列表基于0)。在
在代码中,再往下,指定元素
j
的内容,从2开始,代码会立即爆炸,因为您试图说“对于2个元素的列表,请将以下值存储为第3个元素”。在同样,类似Python中的列表通常也不那么宽容。在
相反,你必须做两件事中的一件:
在你的情况下,你想做nbr。2,这意味着您要重写这行代码:
为此:
这将在列表的末尾追加一个新元素,这是可以的,而不是尝试为元素N+1分配一个新值,其中N是列表的当前长度,这是不正常的。在
你在添加新的元素,那些还不存在的元素。因此,您需要使用
append
:由于这些项还不存在,因此不能通过索引引用它们。Overview of operations on mutable sequence types。在更改这行代码:
为此:
^{pr2}$相关问题 更多 >
编程相关推荐