Python - ayuda para principiante

   
Vista:

ayuda para principiante

Publicado por Danilo (5 intervenciones) el 09/06/2013 05:51:18
estimados, me dieron la siguiente tarea y la verdad es que no logro hacer lo que me piden,

"Supongan el archivo adjunto (notas.csv) el cual tiene:

1ra fila la cabecera del archivo
2da fila las ponderaciones de las notas
3era y siguientes filas las notas de alumnos (un alumno por fila)

Realicen todas las operaciones que se les ocurra con dichos datos, por ejemplo:

1. Cargar en una estructura de datos.
2. Sacar nota ponderada de cada alumno.
3. Sacar promedio por pruebas.
4. Sacar nota máxima y mínima por prueba.
5. Saber quienes van a examen.
6. Saber quienes se eximen.
7. Guardar cualquier grupo de 2 a 6 en un archivo.
8. Etc."

el tema es que no puedo usar el bendito import.csv

no pretendo que me "hagan la tarea" sino que me ayudena entender para poder aprender mejor.

Desde ya, gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

ayuda para principiante

Publicado por xve (1229 intervenciones) el 09/06/2013 17:20:17
Hola Danilo, no se muy bien donde tiene el problema... yo para cargar el archivo lo aria con file, y lego leeria cada una de las lineas y las pondría en una lista de listas.... algo como puse en este post: http://www.lawebdelprogramador.com/foros/Python/1384704-Separar_de_un_archivo_los_valores_que_empiezan_por_numeros.html

Si nos muestras el código que llevas y donde te has quedado, con gusto te ayudaremos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda para principiante

Publicado por Danilo (5 intervenciones) el 09/06/2013 19:01:40
ya habia llegado a esa pagina y de hecho, lo que llevo avanzado es precisamente eso, pero:

1.- la segunda linea de mi archivo notas,csv es así:

X 0.25 0.25 0.1 0.2 0.2

que son las ponderaciones de cada prueba

el resto de las lineas es:

456 4.5 5 5 5 5.5

donde 456 es el id del estudiante y el resto sus notas

se me pide:

run s1 s2 pr1 pr2 la
X 0.25 0.25 0.1 0.2 0.2
456 4.5 5 5 5 5.5 nota final alumno(4.5*0.25+5*0,25+5*0,1+5*0,2+55*0,2)/5
789 2 5 4.5 7 5 nota may y men de cada alumno
234 3 2 4 5 3.5
567 7 6 5 6 5.5
890 6 5 2 6 7

prom de notas de c/prueba
nota mayor y menor de cada prueba
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

ayuda para principiante

Publicado por xve (1229 intervenciones) el 09/06/2013 20:47:44
Hola Danilo, te he realizado un pequeño ejemplo, haber si te sirve...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
# leemos el archivo original
f=file("file.txt", "r")
content=f.read().splitlines()
f.close()
 
# cogemos la primera linea
primeraLinea=content[0].split()
 
# definimos la lista que contendra las notas
final=[]
 
# recorermos el resto de lineas
for line in range(1,len(content)):
    notas=content[line]
 
    final.append(
        [
            notas.split()[0],
            float(primeraLinea[1])*float(notas.split()[1]),
            float(primeraLinea[2])*float(notas.split()[2]),
            float(primeraLinea[3])*float(notas.split()[3]),
            float(primeraLinea[4])*float(notas.split()[4]),
            float(primeraLinea[5])*float(notas.split()[5]),
            (
                float(primeraLinea[1])*float(notas.split()[1])+
                float(primeraLinea[2])*float(notas.split()[2])+
                float(primeraLinea[3])*float(notas.split()[3])+
                float(primeraLinea[4])*float(notas.split()[4])+
                float(primeraLinea[5])*float(notas.split()[5])
            )/5
        ]
    )
    print final

Si hay algo que no entiendes me comentas, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda para principiante

Publicado por danilo (5 intervenciones) el 10/06/2013 01:50:22
lamentablemente no puedo revisarlo, ya que no corre .
al menos tengo una guia de como hacer el tema.

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

ayuda para principiante

Publicado por xve (1229 intervenciones) el 10/06/2013 07:34:05
Hola Danilo, porque no te funciona? a mi me funciona perfectamente. Lo he desarrollado con Python 2.7 y el archivo file.txt contiene lo que tu me has comentado:
1
2
3
4
5
6
X   0.25    0.25    0.1 0.2 0.2
456 4.5  5   5  5   5.5
789 2    5   4.5     7   5
234 3    2   4  5   3.5
567 7   6   5   6   5.5
890 6   5   2   6   7

Coméntanos que error te da, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda para principiante

Publicado por danilo (5 intervenciones) el 10/06/2013 07:37:16
Python 2.7.4 (default, Apr 6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>

Traceback (most recent call last):
File "C:/Users/Danilo/Desktop/preprueba/paraprueba", line 18, in <module>
float(primeraLinea[1])*float(notas.split()[1]),
IndexError: list index out of range
>>>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

ayuda para principiante

Publicado por xve (1229 intervenciones) el 10/06/2013 07:58:34
Danilo, cual es la primera linea del archivo que contiene las notas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda para principiante

Publicado por danilo (5 intervenciones) el 10/06/2013 08:00:38
reemplace el file.txt por el archivo que corresponde, pero la verdad es que te agradezco enormemente tu ayuda, pues, como comenté, sólo buscaba una guía que ya me la diste y ahora estoy terminando el programa que necesito, en cuanto lo tenga, lo posteo aca.

Gracias""""
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar