IndexError: list index out of range

#coding:utf-8 -*-
#! /user/bin/env/python

python vectorsum.py 1000

import sys
import numpy as np
from datetime import datetime
"""input format�� python vectorsum.py n
n: the expected size for the vector"""

def pythonSum(n):
a = range(n)
b = range(n)
c = []
for i in range(n):
a[i] = i ** 2
b[i] = i ** 3
c.append(a[i]+b[i])
return c

def numpysum(n):
a = np.arange(n) ** 2
b = np.arange(n) ** 3
c = a + b
return c

size = int(sys.argv[1])

start = datetime.now()
c = pythonSum(size)
delta = datetime.now() - start
print ("The last 2 elements of the sum", c[-2:])
print ("pythonSum elspaed time in microseconds", delta.microseconds)
start = datetime.now()
c = numpysum(size)
delta = datetime.now() - start
print ("The last 2 elements of the sum", c[-2:])
print ("numpysum elspaed time in microseconds", delta.microseconds)

运行结果:Traceback (most recent call last):
File "D:\workspace\PythonLearn1\src\NumpyLearn__init__.py", line 26, in
size = int(sys.argv[1])
IndexError: list index out of range

我用的是Eclipse下的 python,请问这个越界了,应该在哪里输入 python vectorsum.py n,各位大神,帮忙解决一下吧

1个回答

这个问题一般是索引越界了,这有两种情况,一种是list[index]index超出范围,另一种就是你的list是一个空的 没有一个元素。
而一般都要事先判断一下,随便返回什么,只要判断跳过会报错的逻辑就好了,就比如c[-2:]那一块,

而你的问题是第二种,sys.argv[1] 表示取命令行的第一个参数,但是你在调用vectorsum.py的时候没有加任何参数,所以数组当然就越界了,你的n没有取任何值

qq_28304687
苏酒酒 回复weixin_36340831: 虽然我用的不是Linux,但是我也知道运行命令不是这样的,直接输入 python vectorsum.py就可以了,不用加那个n,那是一个变量,你在vectorsum.py的最底部加上print pythonSum(n),或者给这个函数赋予一个变量再输出,这里n是一个具体的值
大约 3 年之前 回复
qq_28304687
苏酒酒 就是第二种,你没有参数,你看你前面的函数是这个“def pythonSum(n):”,这里面有个参数n,这个在你运行的时候是需要输入具体的值的
大约 3 年之前 回复
weixin_36340831
weixin_36340831 我是在Eclipse下写的python程序,看了很多都是这个解释,但是不是特别明白应该怎么做。可以麻烦一下问一下,我的程序应该怎么改吗?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问