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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ¿Esta bien programar de esta forma?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Esta bien programar de esta forma?  (Leído 7,177 veces)
Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
¿Esta bien programar de esta forma?
« en: 10 Diciembre 2020, 01:36 am »

Hola a todos,ayer tuve un pequeño trabajo practico...después de hacer todo,separe todo por funciones.

Mi pregunta es:¿Esta bien hacerlo de esa forma?

Código:
nombre = []
apellido = []
materia = []
alumnos = {1:nombre,2:apellido,3:materia}




def Altas():
    nombre.append(input("Ingrese el nombre del alumno: "))
    apellido.append(input("Ingrese el apellido del alumno: "))
    materia.append(input("Ingrese la materia: "))
    print(alumnos)

def Bajas():
    print("Esta en bajas")


def Consultas():
    print("Esta en consultas")
    print(alumnos)


def Modificaiones():
    print("Esta en modificaciones")


   


def Menu():
    while True:
       
       
        try:
                print("¿Qué quiere saber?")
                print("1:Altas")
                print("2:Bajas")
                print("3:Consultas")
                print("4:Modificaciones")
                print("5:Salir")
                ele = int(input(": "))
                if ele == 1:
                    Altas()
                elif ele == 2:
                    Bajas()
                elif ele == 3:
                    Consultas()
                elif ele == 4:
                    Modificaiones()
                elif ele == 5:
                    break
                else:
                    print("¡Solo puedes ingresar números del 1 al 5!")
        except ValueError:
            print("Esperaba un numero!")
       
Menu()

 ;)


En línea

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: ¿Esta bien programar de esta forma?
« Respuesta #1 en: 10 Diciembre 2020, 05:44 am »

no hay que ser muy puristas del código, siempre les digo a mis alumnos que si funciona lo que hicieron no está mal.
Si tu código funciona está bien, ahora es cierto que hay convenciones que se usan generalmente y que se trata de usar lo correcto en cada caso.


Código
  1. #-*- coding: utf - 8 -*- #esta línea ahorra problemas con la codificación de caracteres no ingleses
  2. alumnos = {}
  3. #se pueden usar listas individuales pero con un diccionario sobra
  4. #lo ideal sería usar un archivo para guardar los datos y clases para el código, pero como estás aprendiendo así está más que bien.
  5.  
  6. def Altas():
  7.    clave= len(alumnos) #para que la clave se auto incremente
  8.    nombre = input("Ingrese el nombre del alumno: ")
  9.    apellido =input("Ingrese el apellido del alumno: ")
  10.    materia = input("Ingrese la materia: ")
  11.    alumnos[clave + 1] = [nombre,apellido,materia] # una lista con los datos y como clave el número
  12.    # en un futuro la clave puede ser el número de documento, ya que estos son únicos
  13.  
  14. def Bajas():
  15.    return "Está en bajas" #cuando se devuelve un valor cualquiera se estila usar return
  16.  
  17.  
  18. def Consultas():
  19.    print("Está en consultas \n")
  20.    for k,v in alumnos.items():
  21.        print(f"Número del alumno: {k} Nombre: {v[0]} Apellido: {v[1]} Materia: {v[2]}")
  22.  
  23.  
  24. def Modificaiones():
  25.    print("Está en modificaciones")
  26.  
  27. def Menu():
  28.  
  29.    while True:
  30.  
  31.        print("""¿Qué quiere saber? \n
  32. 1:Altas
  33. 2:Bajas
  34. 3:Consultas
  35. 4:Modificaciones
  36. 5:Salir""")
  37.        #en multileneas por lo general se muestran así, con un solo print
  38.        try:
  39.            ele = int(input("\nOpción: ")) #normalmente se usa el try solo para lo que queremos evaluar
  40.        except ValueError:
  41.            print("Esperaba un número!")
  42.            Menu()
  43.        if ele == 1:
  44.            Altas()
  45.        elif ele == 2:
  46.            print(Bajas())
  47.        elif ele == 3:
  48.            Consultas()
  49.        elif ele == 4:
  50.            Modificaiones()
  51.        elif ele == 5:
  52.            print("Gracias por usar el sistema")
  53.            break
  54.        else:
  55.            print("¡Solo puedes ingresar números del 1 al 5!")
  56.       #cuando hay tantos elif también se puede simplificar con el uso de diccionarios    
  57.  
  58. if __name__ == '__main__': #para más adelante es mejor está forma de iniciar el módulo
  59.    Menu()
  60.  
  61.  


ya se que te molesta lo que te digo, pero vas aprendiendo y te muestro otras formas, no por eso son mejores, pero si más estandar.


En línea

Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: ¿Esta bien programar de esta forma?
« Respuesta #2 en: 10 Diciembre 2020, 18:15 pm »

no hay que ser muy puristas del código, siempre les digo a mis alumnos que si funciona lo que hicieron no está mal.
Si tu código funciona está bien, ahora es cierto que hay convenciones que se usan generalmente y que se trata de usar lo correcto en cada caso.


Código
  1. #-*- coding: utf - 8 -*- #esta línea ahorra problemas con la codificación de caracteres no ingleses
  2. alumnos = {}
  3. #se pueden usar listas individuales pero con un diccionario sobra
  4. #lo ideal sería usar un archivo para guardar los datos y clases para el código, pero como estás aprendiendo así está más que bien.
  5.  
  6. def Altas():
  7.    clave= len(alumnos) #para que la clave se auto incremente
  8.    nombre = input("Ingrese el nombre del alumno: ")
  9.    apellido =input("Ingrese el apellido del alumno: ")
  10.    materia = input("Ingrese la materia: ")
  11.    alumnos[clave + 1] = [nombre,apellido,materia] # una lista con los datos y como clave el número
  12.    # en un futuro la clave puede ser el número de documento, ya que estos son únicos
  13.  
  14. def Bajas():
  15.    return "Está en bajas" #cuando se devuelve un valor cualquiera se estila usar return
  16.  
  17.  
  18. def Consultas():
  19.    print("Está en consultas \n")
  20.    for k,v in alumnos.items():
  21.        print(f"Número del alumno: {k} Nombre: {v[0]} Apellido: {v[1]} Materia: {v[2]}")
  22.  
  23.  
  24. def Modificaiones():
  25.    print("Está en modificaciones")
  26.  
  27. def Menu():
  28.  
  29.    while True:
  30.  
  31.        print("""¿Qué quiere saber? \n
  32. 1:Altas
  33. 2:Bajas
  34. 3:Consultas
  35. 4:Modificaciones
  36. 5:Salir""")
  37.        #en multileneas por lo general se muestran así, con un solo print
  38.        try:
  39.            ele = int(input("\nOpción: ")) #normalmente se usa el try solo para lo que queremos evaluar
  40.        except ValueError:
  41.            print("Esperaba un número!")
  42.            Menu()
  43.        if ele == 1:
  44.            Altas()
  45.        elif ele == 2:
  46.            print(Bajas())
  47.        elif ele == 3:
  48.            Consultas()
  49.        elif ele == 4:
  50.            Modificaiones()
  51.        elif ele == 5:
  52.            print("Gracias por usar el sistema")
  53.            break
  54.        else:
  55.            print("¡Solo puedes ingresar números del 1 al 5!")
  56.       #cuando hay tantos elif también se puede simplificar con el uso de diccionarios    
  57.  
  58. if __name__ == '__main__': #para más adelante es mejor está forma de iniciar el módulo
  59.    Menu()
  60.  
  61.  


ya se que te molesta lo que te digo, pero vas aprendiendo y te muestro otras formas, no por eso son mejores, pero si más estandar.

Wow bien bien,aun hay cosas que no entiendo bien lo que hacen...Pero esa es la idea aun estoy aprendiendo...las voy a revisar mas a detalle en un futuro.

Muchas gracias por responder y explicarme.

Que tengas un excelente día u noche! <3

En línea

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: ¿Esta bien programar de esta forma?
« Respuesta #3 en: 10 Diciembre 2020, 19:56 pm »

lo que no entiendas pregunta.
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.841


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: ¿Esta bien programar de esta forma?
« Respuesta #4 en: 11 Diciembre 2020, 00:16 am »

Hola, el código está bien, pero estas usando muchas funciones, y las mismas las tenés que usar únicamente cuando sea necesario, además usar una función para solamente imprimir un texto/dato me parece un poco exagerado, las funciones sirven para procesar varias o muchas cosas sin repetirlas en todo el código, o también se las utiliza para ahorrar/reducir código, pero para lo que generalmente sirven es para facilitar las tareas, ya que por ejemplo llamándolas y pasándoles argumentos, éstas devuelven o hacen lo que queremos que hagan pero tan solo usando una instrucción que es la llamada a la función.


Saludos
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: ¿Esta bien programar de esta forma?
« Respuesta #5 en: 11 Diciembre 2020, 15:11 pm »

Yo opino todo lo contrario a vosotros a cerca de que el código no debe ser puro. A más puro, más funcionalidades es capaz de realizar la función, más seguro, reusable en otros programas, código mucho más corto, código más legible, más fácil de portar, fácil de mantener o modificar.

Lo contrario a código puro suele ser spagetti.

Modifiqué un poco el código para simplificarlo, separar la lógica y quitar cosas que consideré innecesarias o feas.
También que las funciones puedan usar cualquier diccionario que se le pase como argumento, no solo alumnos.

Código
  1. #-*- coding: utf - 8 -*-
  2.  
  3. def altas(alumnos):
  4.    alumnos[len(alumnos) + 1] = [input("Ingrese el nombre del alumno: "),
  5.    input("Ingrese el apellido del alumno: "),
  6.    input("Ingrese la materia: ")
  7.    ]
  8.  
  9. def bajas():
  10.    print("Está en bajas")
  11.  
  12. def consultas(alumnos):
  13.    print("Está en consultas \n")
  14.    for k,v in alumnos.items():
  15.        print(f"Número del alumno: {k} Nombre: {v[0]} Apellido: {v[1]} Materia: {v[2]}")
  16.  
  17. def modificaciones():
  18.    print("Está en modificaciones")
  19.  
  20. def salir():
  21.    print("Gracias por usar el sistema")
  22.    exit()
  23.  
  24. def menu():
  25.        print("""¿Qué quiere saber?
  26.  
  27. 1:Altas
  28. 2:Bajas
  29. 3:Consultas
  30. 4:Modificaciones
  31. 5:Salir
  32. """)
  33.        option = input("Seleccione una opción\n> ")
  34.        return (option.isdigit() and int(option))
  35.  
  36. if __name__ == '__main__':
  37.    alumnos = {}
  38.    while 1:
  39.      option = menu()
  40.      option == 1 and altas(alumnos)
  41.      option == 2 and bajas()
  42.      option == 3 and consultas(alumnos)
  43.      option == 4 and modificaciones()
  44.      option == 5 and salir()
« Última modificación: 11 Diciembre 2020, 15:16 pm por @XSStringManolo » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: ¿Esta bien programar de esta forma?
« Respuesta #6 en: 11 Diciembre 2020, 18:58 pm »

XSStringManolo muy purista del código pero las funciones sin return, vaya contradicción.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: ¿Esta bien programar de esta forma?
« Respuesta #7 en: 12 Diciembre 2020, 02:12 am »

XSStringManolo muy purista del código pero las funciones sin return, vaya contradicción.

Modifiqué el tuyo porque me parecía bastante feo, no hice el mío de 0. Por eso no usa funciones puras.

En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: ¿Esta bien programar de esta forma?
« Respuesta #8 en: 12 Diciembre 2020, 03:40 am »

partamos de la base que no es el mío, y si lo fuese, modifica el de otro, no te pedí ninguna corrección ni lo haría, ya vi que tipo de desarrollador sos.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: ¿Esta bien programar de esta forma?
« Respuesta #9 en: 12 Diciembre 2020, 04:45 am »

partamos de la base que no es el mío, y si lo fuese, modifica el de otro, no te pedí ninguna corrección ni lo haría, ya vi que tipo de desarrollador sos.
Si no aceptas que otros tengan otros puntos de vista mal vamos.

Contesté al usuario dando mi opinión sobre consejos que le diste que no me parecieron sensatos. Si cada vez que discrepe en algo contigo me vas a atacar, hazlo por privado.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines