ayuda con un problema de python

Chema Cortés ch3m4 en ch3m4.org
Mie Ago 13 12:09:12 CEST 2003


Sonia escribió:
> hola!
> supongo q el codigo ya esta correcto . ahora mi duda es en el programa
> principal.
> al ejecutarlo me pidde el numero y despues dme dice q 'm' no esta definida
> en aki:
> 
> notas=[]
> n=int(raw_input('dime un numero: '))
> for i in range(n):
>   notas.append([0.0]*m)

Simplemente resulta que necesitas dos dimensiones para tu matriz. Por un 
lado el número de alumnos, y por otro el número de asignaturas.

n=int(raw_input('Número de alumnos: '))
m=int(raw_input('Número de asignaturas: '))
notas=[]
for i in range(n):
    notas.append([0.0]*m)
for i in range(0,n):
     for j in range(0,m): # <--- cambiado n por m
         mat[i,j]=float(raw_input('valor de la matriz: '))

> despues en el principal, como me has dicho q lo de rdo1, y rdo2 no tenia
> sentido. los prints estan dentro de las funciones, pero q tengo q poner en
> el principal para llamarlos.

Invocas las dos funciones, sin nada más:

p1(nif, codigos,notas,codigo_asig)
p2(notas,codigos)


> bueno, te vuelvo a mandar el codigo completo, por si acaso!
> a ver siya sale x fin!!!
> gracias de nuevo!!!

Creo que casi lo tienes.

>   #ver la posicion q tiene el maximo contador
>   maxi=0
>   pos=0
>   for i in range(0,len(vcont)):
>     if vcont[i] / vmatriculas[i] >maxi:
>       maxi=vcont[i]
>       #no pongo el cociente pq como maximo,
>       #para el resultado solo kiero el codigo de la asignatura , no??
> 
>       pos=i
>   print codigo[pos]

No has dado con el algoritmo. Tienes que hallar la asignatura con la 
mayor "proporción entre matriculados y presentados".

Te pongo un ejemplo para que lo entiendas mejor:

Asignatura1: 3 matriculados y 2 presentados
Asignatura2: 5 matriculados y 3 presentados

Para la primera, la proporción sería 2/3==0.6666
Para la segunda, 3/5==0.6000

En proporción, la primera asignatura tiene más presentados que la segunda.

Y te insisto en que las divisiones de enteros sólo dan enteros. Debes 
convertirlos a 'float':

      proporcion=float(vcont[i])/float(vmatriculas[i])
      if proporcion>maxi:
        maxi=proporcion
        pos=i




Más información sobre la lista de distribución Python-es