我试图将一个C程序翻译成Python,但它给出了一个错误。我做错了什么?在
# -*-coding:utf-8 -*-
datos=open("bio.dat","r+")
h=[];numero=[];edad=[];peso=[]
nombre=[]
#Creando matriz para nombre
for i in range(100):
nombre.append([0]*50)
apellido=[]
#Creando matriz para apellido
for i in range(100):
apellido.append([0]*50)
sexo=[]
#Creando matriz para sexo
for i in range(100):
sexo.append([0]*50)
sumah=[];sumap=[];sumahp=[];sumah2=[]
for l in xrange(1,26):
h+=[l]
sumah+=h
peso+=[l]
sumap+=peso
sumahp+=h*peso
sumah2+=h*h
promh=sumah/25.0
promp=sumap/25.0
a=(sumah*sumap-25*sumahp)/(sumah2-25*sumah*sumah)
b=promp-a*promh
我得到的错误是:
^{pr2}$
显然,这个清单是空的:
在代码开始工作之前,您必须向它添加25个元素(附带说明:列表的索引从
^{pr2}$0
开始,而不是像代码中暗示的那样在1
开始)。这样做:在Python中,列表开始时没有元素,也没有值——它们与其他编程语言中的数组一样,最初的长度是固定的。Python中的列表以零开头,因此即使是
h[0]
也将失败,除非添加元素,例如使用append()
。在更新
所以,您需要将一些C代码翻译成Python。您的方法是错误的,您将初始化数字就好像它们是列表,并且访问元素的方式也不正确。以下是Python中C代码的外观:
在Python中,您应该做的一件事是避免在列表中使用}。它们是这样工作的:
+=
。请使用append()
或{
^{pr2}$append()
方法接受一个参数,并将该参数添加到列表的末尾。extend()
方法接受一个参数,它应该是一个序列,例如另一个list,并将该序列中的每个项目添加到原始列表中,一次一个。有什么区别?好吧,如果您将一个列表传递给append()
方法,它将只向列表中添加一个项,而该列表将是另一个列表。注意:我为什么要提这个?因为现在您在列表上使用
+=
,这与extend()
方法具有相同的效果。因此,您的代码正在执行类似h+=[l]
的操作,其效果与h.extend([l])
相同,只向列表中添加一个项目。但最好改为h.append(l)
,因为这样可以更清楚地了解代码的意图。在相关问题 更多 >
编程相关推荐