RV: Re: ayuda con un problema de python

Sonia siosss en ono.com
Mar Ago 12 16:57:17 CEST 2003


sorry x el mail anterior. era este el q queria enviar!!!

>
>
> > 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