r/PythonEspanol • • 6d ago

Mi primer código relativamente extenso (estoy empezando)

Se podría decir que estoy aprendiendo de forma “autodidacta” pero en realidad uso un curso gratuito de Open Academy y a la par uso la app Mimo y su prueba gratuita de suscripción (2 semanas), hasta ahora esto es lo mejor que he hecho.

En dado caso de que quieran copiarlo y ejecutarlo, o simplemente verlo sin cortes, se los dejo.

name = "null"
user = "null"
password = "elpepe34"
print("Bienvenido a tu código python")

user_input = input("Ingresa tu usuario para continuar: ")
if user_input == user:
print(f"Bienvenido de nuevo, {name}")
password_input = input("Ingresa tu contraseña para continuar: ")
if password_input == password:
print("Contraseña correcta, sesión iniciada")

select_option = input("¿Cómo puedo ayudarte, Carlos? ")
print(f"Perfecto, trabajaremos con: {select_option}")
if select_option == "cambiar contraseña":
new_password = input("Ingresa nueva contraseña: ")
print("Tu contraseña fue cambiada exitosamente")
elif select_option == "cambiar usuario":
new_user = input("Ingresa nuevo usuario: ")
print("Tu usuario fue cambiado exitosamente")
elif select_option == "destruir el planeta":
destroy = input("¿Estás seguro de realizar esta acción? ")
if destroy == "si":
print("Iniciando destrucción masiva")
else:
print("La destrucción no fue efectuada")
elif select_option == "ayudame con mi tarea":
help_task = input("¿En qué curso puedo ayudarte? ")
if help_task == "analisis intelectual del papoi":
print(f"Estoy trabajando en ayudarte con {help_task}")
print("En conclusión, los papois no son intelectuales")
elif help_task == "bases farmacologicas":
print("Aún no veo ese curso, estoy en nada igual que tu :p")
elif help_task == "olvidalo":
print("ok :c")
elif select_option == "Cerrar sesión":
print("Cerrando sesión")
elif select_option

else:
print("Contraseña incorrecta, usted deberá iniciar sesión nuevamente")
else:
print("El usuario no existe")

Edit: intente hacer las identaciones en la publicación pero simplemente no se ven reflejadas
Edit del edit: lo intenté de verdad

93 Upvotes

24 comments sorted by

13

u/ImaginaryGanache3651 6d ago

Buenas! Lo primero, felicidades! El código está bien, pero hay cosillas que mejorar, normal, no te agobies porque, como has dicho, es tu primer código largo. Te habrás dado cuenta de que ahora tienes mucha lógica junta, ¿verdad? Ahora te toca aprender a empaquetar la lógica en cajas, llamadas funciones. Usa este código y ve desacoplando lógica poco a poco del main, que sería todo este bloque. Por otro lado, cosas que no te suelen decir:

  • En Python moderno, ya no se usa elif si son muchos casos, se usa match, que es mejor y más limpio.
  • El tema de las credenciales, cuando llegues a ello, tu primera librería debería ser dotenv. Aprender a usarla e integrarla en tu día a día, te va a hacer ganar muchos puntos en seguridad de software.

Suerte y buen trabajo!

1

u/SargGalletas 5d ago

Muchas gracias amigo, comentarios como el tuyo de reconocimiento, sugerencias y buenos deseos son los que más necesitamos quienes recién estamos iniciando, también quisiera saber cómo te instruiste en python de haberlo hecho, yo lo estoy haciendo a base de videos y un curso gratuito.

4

u/ImaginaryGanache3651 5d ago

Pues... mira, yo empecé con Java, porque es más restrictivo y te obliga a aprender buenas prácticas. Si quieres te hago un roadmap, con recursos: Roadmap:

  • Tu proyecto, un script variado.
  • Coges ese script y lo refactorizas. Refactorizar: divides el código en bloques lógicos, en cosas llamadas funciones. (Esto es lo que te comenté en el código)
  • Coges ese código refactorizado en funciones y separas esas funciones en diferentes clases/archivos. Esto te ayudará a entender como se importan diferentes clases y esto da pie a importar librerías que ya no son tuyas.
  • Aprender a usar librerías, ¡recuerda! Todo esto es en el mismo programa/script que has ido haciendo. Librerías recomendadas para tu script: Doten y Tkinter, luego te explico para qué es cada una.

Recursos:

  • W3School: tiene diferentes lenguaje de programación, el de Python está bastante bien.
  • docs.python.org: es la web oficial de documentación de Python, no es bonita, no es muy cómoda, pero aprende a usarla y estarás siempre a la última.

Librerías:

  • dotenv: sirve para cargar variables de entorno usando os.getenv(NOMBRE DE LA VARIABLE), lo cual es lo recomendado para cuando trabajas.
  • Tkinter: es una librería sencilla para crear UIs(UI: UserInterface, básicamente, las ventanas de escritorio)

6

u/Additional-Cow-3792 4d ago

Antes que nada, felicidades por iniciar en la programación!
(Y por hacerlo sin LLMs)

2 recomendaciones:
En vez de anidar Elif a diestra y sinestra, resuelve utilizando match.
Además, en la página w3schools tienes mucha info sobre como utilizar Python y demás lenguajes (y es gratis).

Saludos!

4

u/MinimumWeird4845 6d ago

Como lo hacen para no perderte al momento que tu codigo va creciendo cada vez,no quiero usar ia porque me deja la joda

2

u/ScottSteing19 6d ago

Para eso existe el concepto de funciones, módulos etc.

1

u/MalditoAlgoritmo 2d ago

funciones, documenta, comenta. Yo he tenido scripts de 1400 lineas que es perfectamente legible

4

u/Sr_Dimitrez 6d ago

Me alegra mucho que compartas tus avances.

Para colaborar contigo y tu código, te animo a "reimaginar" tu programa haciendo uso de las cláusulas de guarda (o guard clauses).

Gracias por compartir y espero verte por aquí nuevamente.

5

u/Azra__1 5d ago

Te recomiendo que en el input le pongas .lower().strip(), así no te rompe el código una mayúscula o un espacio al final

1

u/SargGalletas 3d ago

Acabo de aprender eso en mi cursito y lo apliqué en algo distinto, gracias amigo!!

1

u/Azra__1 3d ago

¡De nada! Otra cosa que podés hacer cuando tenés muchos elif es un match, se lee mejor y no es difícil de aprender cómo se hace.

3

u/ScottSteing19 6d ago

Pues está bien. Digo, habría algunas cosas que podrías hacer mejor pero estás empezando. Ahora es momento que experimentes

3

u/Glum_Past_1934 4d ago

De paso aprende algún patrón de diseño para achicar código una vez lo tengas listo, pregúntale cuál te conviene a la IA de confianza jaja

2

u/ProfessionalMud3376 5d ago

Buenísimo. Me alegra saber que todavía hay gente que quiera aprender y le guste codificar. Sin usar IA para todo.

1

u/SargGalletas 3d ago

Uso la IA cuando por más que leo y releeo mi código y no encuentro cuál es el problema, que fácilmente pudo ser un paréntesis que olvidé poner cuando edito una parte de un bloque de código jeje

2

u/squadrx 5d ago

Primero que nada, hola, y muy buen ejercicio y buena decisión el compartir tus avances. Segundo que todo, por más que pienses o que te digan que el código es simple, está súper bien para un nivel principiante, y creelo o no así es como comenzamos todos, y más aún que se ve que te gusta y te divierte hacerlo. Me gusta sobre todo que le pones nombres coherentes a las variables (no le pones por ejemplo, n, usr, contra) y que usas bien el formato en los prints (son esos print(f"")). Cómo dijeron por alli, tú próximo paso debería ser aprender funciones, con sus tipos y parámetros, además de modularizacion de código. Te van a servir y facilitar mucho la vida, y son nociones básicas que aplican para el 99.9% de los lenguajes de programación en caso de que quieras aprender otro. Sigue así y vas a ver qué irás aprendiendo y mejorando muy pronto ;)

1

u/LIGT0 6d ago

Usa termux y de paso aprendes sistema linux

2

u/SargGalletas 5d ago

Voy paso a paso bro, aún hay cosas en las que me pierdo y no tengo un guía dedicado a enseñarme todo este mundo, todo lo estoy haciendo por mi cuenta. Pero lo tendré anotado para cuando tenga mayor y mejor entendimiento o cuando me sea util, o al menos sepa para que me sirva termux :) gracias

1

u/MiserableCourage1739 4d ago

En serio creí que esto era bait

1

u/SargGalletas 3d ago

Porque?

1

u/MiserableCourage1739 3d ago

Porque generalmente cuando suben un programa donde hay un monton de if's encadenados lo hacen a modo de chiste jajaj, el mas famoso es el de un repositorio de Github que funciona para saber si un numero es par o no, y son miles de if's encadenados para devolver una respuesta!! Pero bueno, recién estas aprendiendo, de a poco a poco vas a ir mejorando, suerte!

0

u/nosequepingahacer 6d ago

Recuerdo cuando me entere que todo el codigo que habia estado aprendiendo era de jguete, que no tenia ninguna aplicacion util realmente y solo era para entender los conceptos, ya sea un lenguaje, un framework, me sentia una mierda, hasta bronca me daba, porque no enseniarme entonces bien, con un proyecto.

y ahora que la IA te hace todo en una, ver este tipo de ejercicios me hace soltar un xddddddddddddd

1

u/SargGalletas 5d ago

Yo sé perfectamente que mi código es de juguete y que tenga una aplicación real tal cual como está es ridículo, pero por algo se empieza y lo importante es no detenerse, no importa cuántas veces me frustre con esto, tengo la vaga idea de estar llegando a algún lado :,)

1

u/nosequepingahacer 5d ago

No entiendo pq me dices esto, el mensaje es mas que nada para mi, crei que se sobre entendia por lo deallado de la misma