elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  alguno me ayuda con un código roto en python?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: alguno me ayuda con un código roto en python?  (Leído 6,615 veces)
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
alguno me ayuda con un código roto en python?
« en: 22 Enero 2015, 06:55 am »

Mi código es el siguiente:

Código
  1. # Funcion 8x9
  2. def obtener_promedio_clase(alumnos):
  3.    puntajes=[]
  4.    alumnos = ['candela', 'milagros', 'ramiro']
  5.    for alumno in alumnos:
  6.        puntajes.append(sacar_promedio(alumno))
  7.    return promedio(puntajes)
  8.  
  9. # Leccion 9x9
  10.    print obtener_promedio_clase(alumnos)
  11.    print calificaciones_con_letras(obtener_promedio_clase(alumnos))

El error: ¡Uy! Probá otra vez. Cuando tratamos de usarlo, vimos que esto estaba roto o que faltaba.

Lo que quiero hacer es mostrá en pantalla (print) el resultado de llamar a obtener_promedio_clase con tu lista de alumnos list. Tus alumnos deben ser [candela, milagros, ramiro] y Después mostrá en pantalla con print el resultado de calificaciones_con_letras para ver el promedio de la clase.


« Última modificación: 22 Enero 2015, 09:00 am por Eleкtro » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #1 en: 22 Enero 2015, 06:59 am »

2 cosas...

1- lo ultimo
Código
  1. # Leccion 9x9
  2.    print obtener_promedio_clase(alumnos)
  3.    print calificaciones_con_letras(obtener_promedio_clase(alumnos))

eso está identado... es decir, está dentro de la funcion obtener_promedio_clase

2- y toda la función
Código
  1. sacar_promedio(alumno)
donde está? cómo es?


« Última modificación: 22 Enero 2015, 07:01 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #2 en: 22 Enero 2015, 07:08 am »

2 cosas...

1- lo ultimo
Código
  1. # Leccion 9x9
  2.    print obtener_promedio_clase(alumnos)
  3.    print calificaciones_con_letras(obtener_promedio_clase(alumnos))

eso está identado... es decir, está dentro de la funcion obtener_promedio_clase

2- y toda la función
Código
  1. sacar_promedio(alumno)
donde está? cómo es?

En la segunda cosa que me señalas la estoy sacando de otra función anterior:

Código:
# Funcion 6x9
def sacar_promedio(alumno):
    tareas=promedio(alumno['tareas'])
    pruebas=promedio(alumno['pruebas'])
    examenes=promedio(alumno['examenes'])
    return 0.1 * tareas + 0.3 * pruebas + 0.6 * examenes
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #3 en: 22 Enero 2015, 07:26 am »

ya creo que vi el error...

Código
  1. def obtener_promedio_clase(alumnos):
  2.    puntajes=[]
  3.    alumnos = ['candela', 'milagros', 'ramiro']
  4.    for alumno in alumnos:
  5.        puntajes.append(sacar_promedio(alumno))
  6.    return promedio(puntajes)

alumnos son 3 strings... es decir, 3 palabras... pasas cada nombre como argumento a sacar_promedio

Código
  1. def sacar_promedio(alumno):
  2.    tareas=promedio(alumno['tareas'])
  3.    pruebas=promedio(alumno['pruebas'])
  4.    examenes=promedio(alumno['examenes'])
  5.    return 0.1 * tareas + 0.3 * pruebas + 0.6 * examenes

sacar promedio recibe la palabra y trata de sacar de ella una asociación inexistente...

es decir recibe "candela" e intenta hacer
Código
  1. "candela"['tareas']
cosa que sabes que no funcionará

creo que la implementación debería ser
Código
  1. def sacar_promedio(alumno):
  2.   promedios=promedio(alumno)
  3.   tareas=promedios['tareas']
no se como es tu funcion promedio, pero si asocia el nombre del alumno, lo conseguirá y lo sacará
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #4 en: 22 Enero 2015, 21:55 pm »

No, en realidad sigue igual, ya le modifique varias cosas pero me sigue dando el mismo error:

Código completo:
Código
  1. candela = {
  2.    "nombre": "Candela",
  3.    "tareas": [90.0, 97.0, 75.0, 92.0],
  4.    "pruebas": [88.0, 40.0, 94.0],
  5.    "examenes": [75.0, 90.0]
  6. }
  7. milagros = {
  8.    "nombre": "Milagros",
  9.    "tareas": [100.0, 92.0, 98.0, 100.0],
  10.    "pruebas": [82.0, 83.0, 91.0],
  11.    "examenes": [89.0, 97.0]
  12. }
  13. ramiro = {
  14.    "nombre": "Ramiro",
  15.    "tareas": [0.0, 87.0, 75.0, 22.0],
  16.    "pruebas": [0.0, 75.0, 78.0],
  17.    "examenes": [100.0, 100.0]
  18. }
  19.  
  20. # ¡Agregá tu función acá abajo!
  21. def promedio (numeros):
  22.    total = sum(numeros)
  23.    total = float(total)
  24.    resultado = total/len(numeros)
  25.    return resultado
  26.  
  27. # Funcion 6x9
  28. def sacar_promedio(alumno):
  29.    tareas=promedio(alumno['tareas'])
  30.    pruebas=promedio(alumno['pruebas'])
  31.    examenes=promedio(alumno['examenes'])
  32.    return 0.1 * tareas + 0.3 * pruebas + 0.6 * examenes
  33.  
  34. # Funcion 7x9
  35. def calificaciones_con_letras(resultado):
  36.    if resultado >=90:
  37.        return "A"
  38.    elif resultado >=80:
  39.        return 'B'
  40.    elif resultado >=70:
  41.        return 'C'
  42.    elif resultado >=60:
  43.        return 'D'
  44.    else:
  45.        return 'F'
  46. print calificaciones_con_letras(sacar_promedio(candela))
  47.  
  48. # Funcion 8x9
  49. def obtener_promedio_clase(alumnos):
  50.    puntajes=[]
  51.    alumnos = ['candela', 'milagros', 'ramiro']
  52.    for alumno in alumnos:
  53.        puntajes.append(sacar_promedio(alumnos))
  54.    return promedio(puntajes)
  55.  
  56. # Leccion 9x9
  57.    print obtener_promedio_clase(alumnos)
  58.    print calificaciones_con_letras(obtener_promedio_clase(alumnos))
« Última modificación: 23 Enero 2015, 03:57 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #5 en: 22 Enero 2015, 22:10 pm »

está mal por lo que te dije...

observa

Código
  1. candela = {
  2.    "nombre": "Candela",
  3.    "tareas": [90.0, 97.0, 75.0, 92.0],
  4.    "pruebas": [88.0, 40.0, 94.0],
  5.    "examenes": [75.0, 90.0]
  6. }
  7. alumnos = ['candela', 'milagros', 'ramiro']
  8.  
  9. print(alumnos[0]==candela)

pero ahora al ver el codigo completo, veo que los alumnos están declarados como variables independientes, solo en el array tienes que quitar las comillas de los nombres

es decir

Código
  1. candela = {
  2.    "nombre": "Candela",
  3.    "tareas": [90.0, 97.0, 75.0, 92.0],
  4.    "pruebas": [88.0, 40.0, 94.0],
  5.    "examenes": [75.0, 90.0]
  6. }
  7. alumnos = [candela, milagros, ramiro]
  8.  
  9. print(alumnos[0]==candela)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #6 en: 23 Enero 2015, 01:07 am »

Ya lo hice pero me sigue diciendo lo mismo.

podrías modificar mi código de modo que corra???
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #7 en: 23 Enero 2015, 04:00 am »

te recomiendo un debugger de python, es muy bueno... los debugger pueden ayudarte a resolver el 80% de los problemas
http://www.pythontutor.com/visualize.html#mode=edit

a mi tu codigo hasta donde está funciona bien, ya que retorna B


hasta la linea 46 el código corre perfecto... el problema viene a partir de la linea 49

Código
  1. def obtener_promedio_clase(alumnos):
  2.   puntajes=[]
  3.   alumnos = ['candela', 'milagros', 'ramiro']
  4.   for alumno in alumnos:
  5.       puntajes.append(sacar_promedio(alumnos))#la variable del loop es alumno, no alumnos
  6.   return promedio(puntajes)

pero el peor error como te dije está en las ultimas 2 lineas.... al estar identadas (tener espacio a la izquierda) están dentro de obtener_promedio_clase, con quitarle el espacio se corrigen...

ahora... el ultimo error... la ultima linea

Código
  1. print calificaciones_con_letras(obtener_promedio_clase(alumnos))

calificaciones_con_letras requiere como argumento un alumno... le estás pasando alumnos que en ese ámbito ni si quiera existe

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #8 en: 23 Enero 2015, 07:25 am »

ya corregi la identación, pero ahora el debug me manda lo siguiente:

Código:
Traceback (most recent call last):
  File "python", line 57, in <module>
NameError: name 'alumnos' is not defined
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: alguno me ayuda con un código roto en python?
« Respuesta #9 en: 23 Enero 2015, 07:45 am »

te estás lanzando a preguntar antes de analizar... así que analizemos...

el error es

Citar
Traceback (most recent call last):
  File "python", line 57, in <module>
NameError: name 'alumnos' is not defined

la linea 57 es
Código
  1. print obtener_promedio_clase(alumnos)

dice que alumnos no está declarado... entonces... si el compilador no se equivoca... donde te equivocas tu?

donde declaraste alumnos? el ámbito global (donde haces el print) tiene acceso a esa variable?

esos errores son comunes... aprende a verlos... si no puedes, posiblemente estás muy cansado... aléjate del pc unos 15 minutos, toma agua y vuelve a intentar
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Alguno se ofrece ;D?
Scripting
ChicoMaravilla 1 2,000 Último mensaje 5 Abril 2011, 05:32 am
por RyogiShiki
[Python] (Ayuda) Código ofuscado.
Scripting
adrianmendezRap 8 7,673 Último mensaje 21 Abril 2012, 15:16 pm
por adrianmendezRap
Ayuda a desofuscar codigo python
Scripting
CADi 3 5,724 Último mensaje 2 Agosto 2013, 21:35 pm
por 0x5d
Problema en python [alguno me ayuda??] « 1 2 »
Scripting
Joe Fraddy 13 6,395 Último mensaje 16 Enero 2015, 05:17 am
por Eleкtro
alguno puede ayudarme con el desplazamiento y posicionamiento de bits en python
Scripting
Joe Fraddy 8 5,184 Último mensaje 22 Febrero 2015, 05:50 am
por Joe Fraddy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines