Autor
|
Tema: ¿Esta bien programar de esta forma? (Leído 7,177 veces)
|
Panic0
Desconectado
Mensajes: 218
|
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? 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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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. #-*- coding: utf - 8 -*- #esta línea ahorra problemas con la codificación de caracteres no ingleses alumnos = {} #se pueden usar listas individuales pero con un diccionario sobra #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. def Altas(): clave= len(alumnos) #para que la clave se auto incremente nombre = input("Ingrese el nombre del alumno: ") apellido =input("Ingrese el apellido del alumno: ") materia = input("Ingrese la materia: ") alumnos[clave + 1] = [nombre,apellido,materia] # una lista con los datos y como clave el número # en un futuro la clave puede ser el número de documento, ya que estos son únicos def Bajas(): return "Está en bajas" #cuando se devuelve un valor cualquiera se estila usar return def Consultas(): print("Está en consultas \n") for k,v in alumnos.items(): print(f"Número del alumno: {k} Nombre: {v[0]} Apellido: {v[1]} Materia: {v[2]}") def Modificaiones(): print("Está en modificaciones") def Menu(): while True: print("""¿Qué quiere saber? \n 1:Altas 2:Bajas 3:Consultas 4:Modificaciones 5:Salir""") #en multileneas por lo general se muestran así, con un solo print try: ele = int(input("\nOpción: ")) #normalmente se usa el try solo para lo que queremos evaluar except ValueError: print("Esperaba un número!") Menu() if ele == 1: Altas() elif ele == 2: print(Bajas()) elif ele == 3: Consultas() elif ele == 4: Modificaiones() elif ele == 5: print("Gracias por usar el sistema") break else: print("¡Solo puedes ingresar números del 1 al 5!") #cuando hay tantos elif también se puede simplificar con el uso de diccionarios if __name__ == '__main__': #para más adelante es mejor está forma de iniciar el módulo Menu()
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
Mensajes: 218
|
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. #-*- coding: utf - 8 -*- #esta línea ahorra problemas con la codificación de caracteres no ingleses alumnos = {} #se pueden usar listas individuales pero con un diccionario sobra #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. def Altas(): clave= len(alumnos) #para que la clave se auto incremente nombre = input("Ingrese el nombre del alumno: ") apellido =input("Ingrese el apellido del alumno: ") materia = input("Ingrese la materia: ") alumnos[clave + 1] = [nombre,apellido,materia] # una lista con los datos y como clave el número # en un futuro la clave puede ser el número de documento, ya que estos son únicos def Bajas(): return "Está en bajas" #cuando se devuelve un valor cualquiera se estila usar return def Consultas(): print("Está en consultas \n") for k,v in alumnos.items(): print(f"Número del alumno: {k} Nombre: {v[0]} Apellido: {v[1]} Materia: {v[2]}") def Modificaiones(): print("Está en modificaciones") def Menu(): while True: print("""¿Qué quiere saber? \n 1:Altas 2:Bajas 3:Consultas 4:Modificaciones 5:Salir""") #en multileneas por lo general se muestran así, con un solo print try: ele = int(input("\nOpción: ")) #normalmente se usa el try solo para lo que queremos evaluar except ValueError: print("Esperaba un número!") Menu() if ele == 1: Altas() elif ele == 2: print(Bajas()) elif ele == 3: Consultas() elif ele == 4: Modificaiones() elif ele == 5: print("Gracias por usar el sistema") break else: print("¡Solo puedes ingresar números del 1 al 5!") #cuando hay tantos elif también se puede simplificar con el uso de diccionarios if __name__ == '__main__': #para más adelante es mejor está forma de iniciar el módulo Menu()
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
lo que no entiendas pregunta.
|
|
|
En línea
|
|
|
|
Danielㅤ
Desconectado
Mensajes: 1.841
🔵🔵🔵🔵🔵🔵🔵
|
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
Mensajes: 2.399
Turn off the red ligth
|
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. #-*- coding: utf - 8 -*- def altas(alumnos): alumnos[len(alumnos) + 1] = [input("Ingrese el nombre del alumno: "), input("Ingrese el apellido del alumno: "), input("Ingrese la materia: ") ] def bajas(): print("Está en bajas") def consultas(alumnos): print("Está en consultas \n") for k,v in alumnos.items(): print(f"Número del alumno: {k} Nombre: {v[0]} Apellido: {v[1]} Materia: {v[2]}") def modificaciones(): print("Está en modificaciones") def salir(): print("Gracias por usar el sistema") exit() def menu(): print("""¿Qué quiere saber? 1:Altas 2:Bajas 3:Consultas 4:Modificaciones 5:Salir """) option = input("Seleccione una opción\n> ") return (option.isdigit() and int(option)) if __name__ == '__main__': alumnos = {} while 1: option = menu() option == 1 and altas(alumnos) option == 2 and bajas() option == 3 and consultas(alumnos) option == 4 and modificaciones() 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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
XSStringManolo muy purista del código pero las funciones sin return, vaya contradicción.
|
|
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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
Mensajes: 2.399
Turn off the red ligth
|
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 💖
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Qué puntos en contra y a favor veis en esta forma de programar?
Programación C/C++
|
anonimo12121
|
6
|
3,248
|
18 Junio 2012, 15:29 pm
por anonimo12121
|
|
|
me gustaria q me revisaran esta funcion recursiva y m dijeran si esta bien
Programación C/C++
|
eduardo17445
|
5
|
4,195
|
2 Noviembre 2012, 05:16 am
por eduardo17445
|
|
|
diganme si esta funcion recursiva esta bien devc++
Programación C/C++
|
eduardo17445
|
4
|
2,846
|
24 Abril 2013, 04:00 am
por 85
|
|
|
Se me quedo una PC, y quiero comprar una nueva, esta bien esta características?
Hardware
|
victtor77
|
0
|
2,848
|
24 Julio 2013, 18:49 pm
por victtor77
|
|
|
Por que este programa corre bien de esta forma y no de esta otra C
Programación C/C++
|
aurquiel
|
2
|
2,941
|
28 Abril 2017, 11:28 am
por MAFUS
|
|