ayuda con un problema de python
Sonia
siosss en ono.com
Jue Ago 14 20:13:24 CEST 2003
ok! asi si q va bien. solo falla al resultado de la 2º funcion, q dice q
codigos no esta definido en esta linea:
print codigo[pos]
igual es pq no es eso lo q se tiene q devolver no?? pq definido, no se q
sera
la funcion q falla es esta 2º:
def p2(notas,codigos):
#recorro la matriz y hago un vector q pondre el
#contador de cada columna cuando sean <> -1
vcont=[0]*len(codigos)
vmatriculas=[0]*len(codigos)
for i in range(0,len(nif)):
for j in range(0,len(codigos)):
if notas[i][j]<>-2: # matriculados
vmatriculas[j]=vmatriculas[j]+1
if notas[i][j]<> -1: # presentados
vcont[j]=vcont[j]+1
#ver la posicion q tiene el maximo contador
maxi=0
pos=0
for i in range(0,len(vcont)):
proporcion=float(vcont[i])/float(vmatriculas[i])
if proporcion>maxi:
maxi=proporcion
pos=i
print codigo[pos]
----- Original Message -----
From: Chema Cortés <ch3m4 en ch3m4.org>
To: <python-es en aditel.org>
Sent: Thursday, August 14, 2003 6:04 AM
Subject: [Python-es] Re: ayuda con un problema de python
> Sonia escribió:
> > vale!
> > ahora me dice q esta fuera del rango esto:
> >
> > if notas[i][posic]>0: #no presentado y no presentado
> >
> >
> > es de este trozo de codigo( y de la misma funcion q antes)
> >
> > for i in range (0,len(nif)):
> > # ahora j es posic:
> > if notas[i][posic]>0: #no presentado y no presentado
> > cont=cont+1 #num de notas
> > sum=sum+notas[i][posic] #suma todas las notas
> > media=sum/cont
>
> Comprueba qué te pasa. Por ejemplo, inserta algún print para ver los
> valores de las variables 'i' y 'posic', así como 'len(notas)' y
> 'len(notas[i])'
>
> Apostaría a que has introducido menos 'notas' que las que necesitas.
>
> Cambia el bloque principal a ésto:
>
> nif=["07525818J","18234590V","10437112X","21334801A"]
> codigos=["IG20","IG02","IG03","IG04","J11"]
> codigo_asig='IG02'
>
> numalumnos=len(nif)
> numcodigos=len(codigos)
>
> # Inicializamos la matriz de notas
> for i in range(numalumnos):
> notas.append([0.0]*numcodigos)
>
> # Introducimos notas
> for i in range(numalumnos):
> print "Alumno:", nif[i]
> for j in range(numcodigos):
> print "Asignatura:",codigos[j]
> notas[i][j]=float(raw_input('Nota: '))
>
> print notas
> p1(nif,codigos,notas,codigo_asig)
> p2(notas,codigos)
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es