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