ayuda con un problema de python

Sonia siosss en ono.com
Mar Ago 12 01:03:33 CEST 2003


hola!!
creo q he mejorado el programa, intentado hacer el principal y todo, uanq la
matriz la pido y en verdad kiero poner un ejemplo, al igual q hago en las
listas
os agrego el programa 'completo'
lo he compilado (gasto el pythong) pero me da errores de identacion en los
fors y eso, y no se q pasa. yo creo q son asi
bueno si podeis me lo mirais y me corregiis lo q veais!!

gracias!!!


#procedimiento q reciba como parametros la matriz,
#los 2 vectores nif y codigos, y el codigo de la
#asignatura, y muestre por pantalla el NIF de aquellos
#estudiantes q hayan obtenido en dicha asignatura una
#nota superior a la media de la asignatura. Para
#calcular la media unicamentese deben considerar las
#notas de los presentados al examen
from matrices import matriz

def p1(nif, codigos,notas,codigo_asig):
  #mira la posicion del codigo_asig en el vector codigos
  #para saber la columna a recorrer en la matriz
  cont=0
  for j in codigos:
    if codigos[j]==codigo_asig:
      posic=j #columna a recorrer

  media=0
  sum=0
  cont=0
  for i in range (0,len(nif)) and j==posic:
    #for j==posic:
      if notas[i][j]>0: #no presentado y no presentado
        cont=cont+1 #num de notas
        sum=sum+notas[i][j] #suma todas las notas
  media=sum/cont

#como se inicializaba el vector q creo?¿?¿?¿

  for i in range(0,len(nif)) and j==posic:
    #for j==posic:
      if notas[i][j]>media[j]:
return nif[j]




#escribir un procedimiento q reciba como parametros
#la matriz de notas y el vector codigos, y muestre por
#pantalla el codigo de la asignatura q tiene mayor
#porcentaje de presentados respecto al total de los
#matriculados

def p2(notas,codigos):

#recorro la matriz y hago un vector q pondre el
#contador de cada columna cuando sean <> -1

  for i in range(0,len(nif)):
    for j in range(0,len(codigos)):
      if notas[i][j]<> -1:
        vcont[j]=vcont[j]+1
  #ver la posicion q tiene el maximo contador
  max=0
  pos=0
  for i in range(0,len(vcont)):
    if vcont[i]>max:
      max=vcont[i]
      pos=i
return codigo[pos]

#como tengo q definir el vector q creo???

#supongo q ahora el programa principal solo sera
#inicializar todas las listas y matrices, no se si me
#faltara algo mas


#PROGRAMA PRINCIPAL


nif=["07525818J","18234590V","10437112X","21334801A"]
codigos=["IG20","IG02","IG03","IG04","J11"]
codigo_asig='IG02'

n=int(raw_input('dime un numero: '))
notas=matriz(n,n)
for i in range(0,n):
    for j in range(0,n):
        mat[i,j]=int(raw_input('valor de la matriz: '))

rdo1=p1(nif, codigos,notas,codigo_asig):
rdo2=p2(notas,codigos):

print notas
print 'Estudiantes con nota superior a la media', rdo1
print 'Asignatura con mayor porcentaje', rdo2



----- Original Message -----
From: Chema Cortés <ch3m4 en ch3m4.org>
To: <python-es en aditel.org>
Sent: Monday, August 11, 2003 7:02 AM
Subject: [Python-es] Re: ayuda con un problema de python


> Chema Cortés escribió:
>
> OJO!, he tenido algunos fallos en el código que he puesto (aún no me he
> recuperado de las fiestas de Huesca)
>
> > for c in codigos:
> >   if c==codigo_asig:
> >     posic=c
> >     break  # ya no hace falta seguir mirando
>
> ERROR1: Aquí 'posic' sería el código de la asignatura, no la posición de
> la columna.
>
> > Aquí tienes mal puestos los if's. Deberías haber combinado los dos:
> >
> > if notas[i][j]<>'-1' or notas[i][j]<>'-2':
> >   ...
> >
>
> La combinación sería con 'and', no con 'or'
>
>
> > Te pongo la versión con compresión de listas (y python 2.3); pero
> > deberías seguir intentándolo como lo venías haciendo hasta ahora:
> >
> > def (nif, codigos,notas,codigo_asig):
> >   posic=notas.index(codigo_asig)
> >   notas_asignatura=[n[posic] for n in notas]
> >   notas_presentados=[n for n in notas_asignaturas if n>=0]
> >
> >   media=sum(notas_presentados)/len(notas_presentados)
> >
> >   for i,n in enumerate(notas_asignatura):
> >     if n>media:
> >       print nif[i],n
>
> Incompresiblemente (para mí), en este código creo que no he cometido
> hErrores :-P
>
>
> _______________________________________________
> 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