Foros Python
Atributos a variable (Orientado a objetos) - Versión para impresión

+- Foros Python (https://foro.recursospython.com)
+-- Foro: Desarrollo (https://foro.recursospython.com/forumdisplay.php?fid=1)
+--- Foro: General (https://foro.recursospython.com/forumdisplay.php?fid=9)
+--- Tema: Atributos a variable (Orientado a objetos) (/showthread.php?tid=1035)



Atributos a variable (Orientado a objetos) - luisgarrido - 30-09-2021

Hola!
Estoy tratando de que ejecute la función notamayor, pero sale error.
Todo funciona por medio de menú
Ayuda!

Código:
lista = list()

class NotasDefinitivas:
    def __init__(self):
        self.nombres=(" ")
        self.notas=( )
def opciones():
    teclado = 0
    while teclado != 8:
        print ("-----Programa para validar registro de Estudiantes-----")
        print ("1. Registrar Estudiante")
        print ("2. Ver Estudiante/s registrados")
        print ("3. Estudiante/s con mayor nota")
        print ("4. Estudiante/s con menor nota")
        print ("5. Promedio de notas definitivas")
        print ("6. Ver Estudiantes con notas menores o iguales al promedio")
        print ("7. Ver Estudiantes con notas mayores al promedio")
        print ("8. Salir")
        teclado = int(input("Ingrese el número de la opción deseada: "))
        if teclado==1:
            registrarest()
        else:
            if teclado==2:
                verest()
            else:
                if teclado==3:
                    notamayor()
                else:
                    if teclado==4:
                        notamenor()
                    else:
                        if teclado==5:
                            promedio()
                        else:
                            if teclado==6:
                                menorpromedio()
                            else:
                                if teclado==7:
                                    mayorpromedio()
                                else:
                                    if teclado==8:
                                        salirp()
                                    else:
                                        print ("**Opción no válida. Intente de nuevo**")
def registrarest():
    print ("")
    print ("----- Registro de Estudiante----- ")
    estudiante = NotasDefinitivas()
    estudiante.nombres = str (input("Ingrese el nombre de el/la Estudiante: "))
    estudiante.notas = float (input("Escriba la nota de el/la Estudiante: "))
    lista.append(estudiante)
def verest():
    print ("")
    print ("***** Listado de Estudiantes registrados *****")
    for estudiante in lista:
        print("El/la estudiante",estudiante.nombres,"tiene una nota definitiva de:",estudiante.notas)
def notamayor():
    mayor = estudiante.notas[0]
    for estudiante in range(lista):
        if (estudiante.notas[estudiante] > mayor):
            mayor = estudiante.notas[estudiante]
            print ("El estudiante",estudiante.nombres[estudiante],"registra la nota más alta:" + str (mayor))
        else:
            print ("Nota mayor no encontrada")
def notamenor():
    print ("Nota menor")
def promedio():
    print ("Promedio del grupo")
def menorpromedio():
    print ("Estudiante/s menores o iguales al promedio")
def mayorpromedio():
    print ("Estudiante/s mayores al promedio")
def salirp():
    print ("---- Gracias. ¡Nos vemos pronto! ----")
opciones()



RE: Atributos a variable (Orientado a objetos) - Francisco - 30-09-2021

Hola, bienvenido.

En tu función notamayor() estás haciendo referencia a una variable "estudiante" que no existe.

Saludos