El Estudiante Se Vuelve Profesor: Enviar Letra - 101


#1

Estimados,

Busqué por todos lados, y figuran las siguientes respuestas:

  • cambiar "examenes" por "exámenes" : lo probé y no funcionó.
  • Agregar round(nota) me sigue dando el mismo resultado y sigue dándome el error 101

¿A alguien se le ocurre cual puede ser el error?

https://www.codecademy.com/es/courses/python-beginner-en-Rj5fy/1/3?curriculum_id=50fc7aab5fab3aa9c2002444#

¡Uy! Probá otra vez. Tu función falló cuando se ingresó 101 como dato de entrada..


Lloyd = {
    "nombre":"Lloyd",
    "tareas": [90,97,75,92],
    "pruebas": [ 88,40,94],
    "examenes": [ 75,90]
    }
Alice = {
    "nombre":"Alice",
    "tareas": [100,92,98,100],
    "pruebas": [82,83,91],
    "examenes": [89,97]
    }
Tyler = {
    "nombre":"Tyler",
    "tareas": [0,87,75,22],
    "pruebas": [0,75,78],
    "examenes": [100,100]
    }
alumnos = [Lloyd,Alice,Tyler]

def promedio(x): 
    return float(sum(x)) / len(x)
    return pro_final

def calcularPromedio(x): 
    pro_tareas = (sum(x[("tareas")])/ len(x[("tareas")]))
    pro_pruebas = (sum(x[("pruebas")]) / len(x[("pruebas")]))
    pro_examenes = (sum(x[("examenes")]) / len(x[("examenes")]))
    pro_final = (pro_tareas*.1+pro_pruebas*.3+pro_examenes*.6)
    return pro_final


def obtenerCalificacionenLetras(nota):
    if calcularPromedio(nota) >= 90:
        return "A"
    elif calcularPromedio(nota) >= 80 and calcularPromedio(nota) < 90:
        return "B"
    elif calcularPromedio(nota) >= 70 and calcularPromedio(nota) < 80:
        return "C"
    elif xcalcularPromedio(nota) >= 60 and calcularPromedio(nota) < 70:
        return "D"
    elif calcularPromedio(nota) < 60 and calcularPromedio(nota) >= 0:
        return "F"
    else:
        return "Error"

print obtenerCalificacionenLetras(Lloyd)


#2

Remove that line, it is unreachable after return.

Use the average function, and be sure your variables and keys match the instructions. (See earlier topic.)

Unnecessary logic. No and required.

Remove.

else return F

#3

Gracias por la dedicación, pero sabes que corregí lo que me dijiste y sigue tirando error.

Me falto entender una sola cosa de tus correcciones:


Esto si que no entiendo, me estas diciendo que use la función de promedio, pero en el ejercicio anterior me lo aprobó con esta formula, ¿que es lo que está mal?


No lo había pensando, claro al comprobar primero si es mayor a 90, no hace falta que después lo vuelva a comprobar, estaba escribiendo "al pedo" jaja gracias por ayudarme a razonar eso.


#4

Aplique round, y sigo teniendo el mismo error.

¿Alguien se le ocurre como podría solucionar esto? Busque en todos los post y nada :confused:

Lloyd = {
    "nombre":"Lloyd",
    "tareas": [90,97,75,92],
    "pruebas": [ 88,40,94],
    "exámenes": [ 75,90]
    }
Alice = {
    "nombre":"Alice",
    "tareas": [100,92,98,100],
    "pruebas": [82,83,91],
    "exámenes": [89,97]
    }
Tyler = {
    "nombre":"Tyler",
    "tareas": [0,87,75,22],
    "pruebas": [0,75,78],
    "exámenes": [100,100]
    }
alumnos = [Lloyd,Alice,Tyler]

def promedio(x): 
    return float(sum(x)) / len(x)

def calcularPromedio(x): 
    tareas = promedio(x["tareas"])*.1
    pruebas = promedio(x["pruebas"])*.3
    examenes = promedio(x["exámenes"])*.6
    return round(tareas + pruebas + examenes)

def obtenerCalificacionenLetras(nota):
    if calcularPromedio(nota) >= 90:
        return "A"
    elif calcularPromedio(nota) >= 80:
        return "B"
    elif calcularPromedio(nota) >= 70:
        return "C"
    elif xcalcularPromedio(nota) >= 60:
        return "D"
    else:
        return "F"


print obtenerCalificacionenLetras(Lloyd)

#5

No es necesario llamar a ninguna función, simplemente use el parámetro.

No need to call any function, just use the parameter.

if nota >= 90: ...

#6

Ante todo, muchas gracias!

Lo resolví con lo que me dijiste y algo más.

Pero me queda una duda:
Si yo no llamo a la función "promedio" o "calcularPromedio" dentro de la función "obtenerCalificacionesLetras" la nota que estaría tomando en realidad no sería un promedio de nada.
Es por eso que me veo obligado a llamar una de estas funciones a través del "print obtenerCalificacionenLetras(calcularPromedio(Lloyd))"

Mi duda es, ¿por que funciona si lo llamo desde print y no funciona si lo llamo desde la función, siendo que, de las dos maneras obtengo en la pantalla los mismos resultados?

def promedio(x): 
    return float(sum(x)) / len(x)

def calcularPromedio(x): 
    tareas = promedio(x["tareas"])*.1
    pruebas = promedio(x["pruebas"])*.3
    examenes = promedio(x["exámenes"])*.6
    return round(tareas + pruebas + examenes)

def obtenerCalificacionenLetras(nota):
    if nota >= 90:
        return "A"
    elif nota >= 80:
        return "B"
    elif nota >= 70:
        return "C"
    elif nota >= 60:
        return "D"
    else:
        return "F"


print obtenerCalificacionenLetras(calcularPromedio(Lloyd))

#7

returns nota

returns letter grade given a score


#8

Si, eso lo entiendo, lo que no entiendo es porqué, cuando lo hago a través de la función me tira el erro del 101 xD

jajaj

Gracias igual!


#9

¿No pasa cuando nota es 101?

Does it not pass when nota is 101?