Mi código es el siguiente:
# Funcion 8x9
def obtener_promedio_clase(alumnos):
puntajes=[]
alumnos = ['candela', 'milagros', 'ramiro']
for alumno in alumnos:
puntajes.append(sacar_promedio(alumno))
return promedio(puntajes)
# Leccion 9x9
print obtener_promedio_clase(alumnos)
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.
2 cosas...
1- lo ultimo
# Leccion 9x9
print obtener_promedio_clase(alumnos)
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
sacar_promedio(alumno)
donde está? cómo es?
Cita de: engel lex en 22 Enero 2015, 06:59 AM
2 cosas...
1- lo ultimo
# Leccion 9x9
print obtener_promedio_clase(alumnos)
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
sacar_promedio(alumno)
donde está? cómo es?
En la segunda cosa que me señalas la estoy sacando de otra función anterior:
# 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
ya creo que vi el error...
def obtener_promedio_clase(alumnos):
puntajes=[]
alumnos = ['candela', 'milagros', 'ramiro']
for alumno in alumnos:
puntajes.append(sacar_promedio(alumno))
return promedio(puntajes)
alumnos son 3 strings... es decir, 3 palabras... pasas cada nombre como argumento a sacar_promedio
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
sacar promedio recibe la palabra y trata de sacar de ella una asociación inexistente...
es decir recibe "candela" e intenta hacer
"candela"['tareas']
cosa que sabes que no funcionará
creo que la implementación debería ser
def sacar_promedio(alumno):
promedios=promedio(alumno)
tareas=promedios['tareas']
no se como es tu funcion promedio, pero si asocia el nombre del alumno, lo conseguirá y lo sacará
No, en realidad sigue igual, ya le modifique varias cosas pero me sigue dando el mismo error:
Código completo:
candela = {
"nombre": "Candela",
"tareas": [90.0, 97.0, 75.0, 92.0],
"pruebas": [88.0, 40.0, 94.0],
"examenes": [75.0, 90.0]
}
milagros = {
"nombre": "Milagros",
"tareas": [100.0, 92.0, 98.0, 100.0],
"pruebas": [82.0, 83.0, 91.0],
"examenes": [89.0, 97.0]
}
ramiro = {
"nombre": "Ramiro",
"tareas": [0.0, 87.0, 75.0, 22.0],
"pruebas": [0.0, 75.0, 78.0],
"examenes": [100.0, 100.0]
}
# ¡Agregá tu función acá abajo!
def promedio (numeros):
total = sum(numeros)
total = float(total)
resultado = total/len(numeros)
return resultado
# 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
# Funcion 7x9
def calificaciones_con_letras(resultado):
if resultado >=90:
return "A"
elif resultado >=80:
return 'B'
elif resultado >=70:
return 'C'
elif resultado >=60:
return 'D'
else:
return 'F'
print calificaciones_con_letras(sacar_promedio(candela))
# Funcion 8x9
def obtener_promedio_clase(alumnos):
puntajes=[]
alumnos = ['candela', 'milagros', 'ramiro']
for alumno in alumnos:
puntajes.append(sacar_promedio(alumnos))
return promedio(puntajes)
# Leccion 9x9
print obtener_promedio_clase(alumnos)
print calificaciones_con_letras(obtener_promedio_clase(alumnos))
está mal por lo que te dije...
observa
candela = {
"nombre": "Candela",
"tareas": [90.0, 97.0, 75.0, 92.0],
"pruebas": [88.0, 40.0, 94.0],
"examenes": [75.0, 90.0]
}
alumnos = ['candela', 'milagros', 'ramiro']
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
candela = {
"nombre": "Candela",
"tareas": [90.0, 97.0, 75.0, 92.0],
"pruebas": [88.0, 40.0, 94.0],
"examenes": [75.0, 90.0]
}
alumnos = [candela, milagros, ramiro]
print(alumnos[0]==candela)
Ya lo hice pero me sigue diciendo lo mismo.
podrías modificar mi código de modo que corra???
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
def obtener_promedio_clase(alumnos):
puntajes=[]
alumnos = ['candela', 'milagros', 'ramiro']
for alumno in alumnos:
puntajes.append(sacar_promedio(alumnos))#la variable del loop es alumno, no alumnos
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
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
ya corregi la identación, pero ahora el debug me manda lo siguiente:
Traceback (most recent call last):
File "python", line 57, in <module>
NameError: name 'alumnos' is not defined
te estás lanzando a preguntar antes de analizar... así que analizemos...
el error es
CitarTraceback (most recent call last):
File "python", line 57, in <module>
NameError: name 'alumnos' is not defined
la linea 57 es
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
Cita de: engel lex en 23 Enero 2015, 07:45 AM
te estás lanzando a preguntar antes de analizar... así que analizemos...
el error es
la linea 57 es
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
Ya esta ya corrio, tenias razón llegue a un punto que me desesperé del programa, y si hacía falta declarar la variable alumnos: mi código final quedó así:
# Leccion 9x9
alumnos=0
print obtener_promedio_clase(alumnos)
print calificaciones_con_letras(obtener_promedio_clase(alumnos))
Gracias por la ayuda!!!!!!
está bien, porque al final los array en python siempre se pasasn como referencia... pero debiste haber declarado los alumnos afuera para que se viera bien... pero si funciona y así lo debes hacer, excelente! ;-)