我正在做一个家庭作业程序,在那里我需要创建一个矩阵,我做了一个函数,用一个数组和一些记录(我以前创建的)作为参数,但是当我创建大量的记录时,例如:100条记录,我得到的列表索引超出了范围
数组创建:
def crearVector(n):
vec = [None] * n
for i in range(len(vec)):
codigo = random.randint(1, 1000)
precio = round(random.uniform(1, 100000), 2)
ubicacion = random.randint(1, 23)
estado = random.randint(0, 1)
cantidad = random.randint(0, 1000)
puntuacion = random.randint(1, 5)
publicacion = Publicacion(codigo, precio, ubicacion, estado, cantidad, puntuacion)
vec[i] = publicacion
return vec
数组创建函数调用:
def test():
n = validateHigherThan(0)
vec = crearVector(n)
矩阵创建和显示功能:
mat = crearMatriz(vec)
forma = int(input("How would you like to show the matrix?(0: matrix, 1: list): "))
if forma == 1:
mostrarMatrizLista(mat)
elif forma == 0:
mostrarMatriz(mat)
矩阵创建:
def crearMatriz(vec):
mat = [[0] * 5 for i in range(23)]
for i in range(len(vec)):
fil = vec[i].ubicacion
col = vec[i].puntuacion-1
mat[fil][col] += 1
return mat
我相信你在矩阵上的fil列的ubicacion上缺少了-1。请看下面的代码。定义以0开头的列时要小心
另外,我假设你的程序并不需要那么多的易读性,因为它是一个家庭作业,然而,使用一些变量来帮助你定义你的最大范围是很有用的,以帮助你调试,例如
你创建了一个23*5的矩阵
应该是
因为ubicacion可以有从1到23的随机数。你知道吗
更好的是,您可以使用全局变量来定义这些参数,而不是在两个函数中硬编码它们。你知道吗
相关问题 更多 >
编程相关推荐