edición general
404 meneos
9912 clics
Manual de prácticas para Python desde cero [PDF|900 KiB]

Manual de prácticas para Python desde cero [PDF|900 KiB]

Aquí os dejo un manual de prácticas de Python pensadas para aprender sin tener ningún conocimiento previo. Pensada para alumnos de bachillerato, pero invitamos a cualquiera que quiera iniciarse a que lo pruebe. Estas cosas que se comparten para el bien de todos tienen un alto coste en tiempo y esfuerzo, así que también se agradece mucho la difusión y aportaciones que queráis hacer.

| etiquetas: prácticas , python , desde cero , javier fernández panadero
12»
  1. #93: ¿Y qué haces en Python si se te rompe la barra espaciadora o la tecla intro? #troll

    Es cierto que se suelen dar los ficheros en un anexo, pero fíjate que con C eso no es problema.

    De todas formas: ¿Te gusta estructurar el código con espacios? Me parece estupendo, pero luego no pretendáis que al resto nos guste así, porque yo he tratado de programar para FreeCAD y en pocas horas terminé odiando Python y lo de programar con espacios.
  2. #90: Depende, si pegas el código aquí creo que si se pierde el indentado.
  3. #95 entonces el uso es el mismo que shell script más o menos ¿no? supongo que aportará más cosas que shell script
  4. #103 y yo podría opinar que la POO es el pasado y que lo que hay que enseñar es el paradigma funcional y lo primero después del hello world es entender monadas y functores.

    Y sería una estupidez.

    Nadie aprende en cabeza ajena y hasta que no se tienen los problemas que son resueltos por un BUEN modelo de herencia (la herencia no es tan común y muchas veces es una mala elección y el problema se resuelve mejor con composición), no se comprende por qué hay que dar "tanto rodeo" para "hacer lo mismo".

    Como vas a explicar a alguien que no sabe que es una función, una variable, una asignación, un bucle... ¿Cosas de diseño?

    Además, una de las primeras prácticas a evitar es la sobre ingeniería, cosa que tampoco puedes explicar a alguien que no conoce lo fundamental y, además, patrones, solid, grasp, los fundamentos de POO...

    Espero que no seas responsable de ningún Junior... Porque menuda cruz, la memez que dices es justo la definición de empezar la casa por el tejado.
  5. #31 si utilizas in paquete sin mirar su contenido, tu eres el chapuzas y tú eres el problema.

    Menuda mierda de opinión, con acritud. ¿Te recuerdo la opinión de Tanenbaum sobre la primera versión que público Torvalds de su SO? Según tú eso nunca debió haber llegado a ser publicado, porque el tribunal mágico de lo correcto y lo incorrecto debería haberlo parado.

    Simplón que eres un simplón.
  6. #11 Venga... Javascript? En serio?

    Javascript está donde está sólo porque es el único lenguaje que interpretan todos los navegadores, pero como lenguaje de programación es un pastiche que pasará a la historia como la mayor violación del principle of least astonishment (PoLA) de un lenguaje conocido.

    Y para muestra... un repo :-D
    github.com/denysdovhan/wtfjs (quicir: WTF, JS)

    Respecto a Python es precisamente su semántica de líneas e indentación la que lo convierte en uno de los lenguajes más legibles, a mi juicio el más legible, y comprensible incluso por programadores que jamás hayan leído una línea de Python (si es que aún queda alguno).

    Comparativamente, el wtfpy, resulta hasta enternecedor.
  7. #107: ¿Sabías que JavaScript también se puede indentar?

    De hecho yo rara vez he visto código JS no indentado, y aunque lo viera... ¿Sabías que se puede indentar automáticamente? Y lo que es mejor, adaptarlo a mis ojos, no tener que seguir la forma de ver del creador de Python, que él tendrá sus ojos, pero y no tengo por qué ser igual que él. Porque esa es otra, se piensan que la forma de ver de todo el mundo es igual, no se dan cuenta de que lo que para una persona es demasiado compacto para otra puede estar demasiado disperso. Se piensan que todos salimos de un mismo molde. :palm:

    ¿Y sabes cuál es para mi la principal diferencia entre JS y Python? Que en JS he podido hacer cosas, en Python NO, lo tuve que dejar por imposible, no soporto eso de tener que estructurar el código con espacios.

    En JS si no quiero usar el operador "+" para concatenar cadenas de texto, tengo esa opción, Python en cambio no da ese tipo de libertades, tiene que ser todo como su creador diga.

    En mi opinión JS se adapta al programador, en cambio en Python es el programador el que se tiene que adaptar a Python.
  8. #57 Pues nos quedamos con la duda, porque teniendo en cuenta que topazo es un identificador, y no una cadena, el único requisito es que ambos tengan el mismo valor... :-D
  9. #108 ¿Sabías que JavaScript también se puede indentar?
    Qué remedio. Aunque desde conocí Typescript no he vuelto a tocar Javascript ni con un palo.

    En JS si no quiero usar el operador "+" para concatenar cadenas de texto, tengo esa opción
    En Python también:
    cadena = ("un trozo" "de la cadena" ", y también puedes" "incluir saltos de línea")
    es perfectamente válido.

    Más allá de tu experiencia personal con ambos lenguajes o de la mía, que es la de llevar un buen puñado de años ganándome la vida con esto, y de las "formas de ver" y gustos que tenga cualquiera, la legibilidad es un concepto perfectamente cuantificable.

    La cuestión no es que "puedas" indentar, sino que la indentación, al tener una semántica, te permite interpretar el código sin buscar relaciones ocultas por llaves. No puedes engañar al ojo con Python. Javascript sin embargo, lo hace constantemente.

    Puedes estar seguro de que jamás encontrarás a Javascript en los primeros puestos en una encuesta sobre legibilidad. Aunque quizás sí te encuentres a Coffeescript... cuya diferencia más notable con Javascript consiste en sustituir las llaves por indentación :-D
  10. #110 faltar al respeto? Yo creo que no has leído tu primer comentario y el tonito utilizado, ni te das cuenta de la prepotencia que desprendes en cada comentario intentando sentar cátedra con falacias por doquier.

    Hasta luego, fenómeno.
  11. #111: Yo no me gano la vida programando, pero si uso la programación y puedo decir varias cosas:
    - Prefiero la estructuración del código mediante "llaves ocultas" (como dices) a tener que andar quitando y poniendo espacios para hacer una triste prueba para localizar un fallo.
    - Yo siempre indento JavaScript y lo hago a mi gusto, no al gusto de los creadores de JS. El código resultante es muy legible a mis ojos.
    - Me gusta tener las cosas bien separadas, si tengo un IF me gusta ver la condición entre paréntesis, si no me pones paréntesis me cuesta diferenciarla. Como dije, cada persona tiene sus ojos y yo tengo los míos.

    Yo como ejemplo pondría esto:
    github.com/shaise/FreeCAD_SheetMetal/blob/917c4fcecde8120b046be213b47d
    Mira la línea 157 y siguientes, a lo mejor tú lo ves claro, yo, sin llaves, sin paréntesis... no.

    Y eso que está coloreada la sintaxis, con JavaScript yo he usado hasta el Bloc de notas.

    ¿Resultado? Soy incapaz de programar en Python sin mandarlo a freír espárragos antes de 6 horas de "trabajo", a lo mejor no seré profesional, pero un lenguaje de programación es mejor si es asequible a todo el mundo y no restringido a profesionales.
  12. #104 No exactamente, por ejemplo bash llamará a programas del SO, por ejemplo grep.
    Sin embargo python, tiene funciones propias de un lenguaje, por ejemplo fd=open(<fichero>,<modo>).
  13. #113 Joder, es que ya hay que ser cutre para indentar con dos espacios xD

    A partir de 157 cada "def" es una función que termina cuando aparece el siguiente el elemento al mismo nivel de indentación. Es decir, es como el formato clásico de lista:

    - elemento uno
        - elemento dos
            - elemento tres
    - elemento cuatro

    Todos ahí vemos claramente que el elemento "dos" está incluido en el "uno", que el "tres" lo está en el "dos" (y por tanto en "uno") y que el elemento "cuatro" está al mismo nivel jerárquico de "uno".

    un lenguaje de programación es mejor si es asequible a todo el mundo y no restringido a profesionales

    Totalmente de acuerdo. Y esa es la opinión mayoritaria que he escuchado sobre Python, y no tanto sobre Javascript. Con lo de "me gano la vida con ello" no quería dar a entar que por ello mi opinión sobre su legibilidad fuese más válida que la de otros, sino dar a entender que mi experiencia o gusto personal tampoco es un argumento a favor o en contra. La legibilidad es totalmente cuantificable, en base a un montón de parámetros (de los cuales desconozco más de la mitad), y en ese aspecto lenguajes como Python, Haskell o Smallscript aparecen siempre en los primeros puestos.

    Obviamente en nuestro caso, que ya sabemos programar, nuestro bagaje pesa más que esos aspectos porque, digámoslo así, tenemos el entendimiento viciado. Y que conste que las llaves no me disgustan en absoluto, mis problemas con Javascript son otros. De hecho Kotlin me parece una auténtica virguería (y me reconcilió con la JVM, algo que no hizo ni Jython). Y Go no estaría mal si no fuese por esa lamentable gestión de errores a las que les ha llevado querer renegar de las excepciones y del try-catch-finally para acabar enmascarándolo en panic, recover y defer.
  14. #115: Yo normalmente indento con uno o dos, si pongo mucho más el código se me hace demasiado disperso. xD

    Lo que si tengo que decir es un problema que está apareciendo en JS y en otros lenguajes: el exceso de atajos. Para el que programa mucho están bien, pero para los que no se dedican a ello... es una barrera porque es fácil no saber lo que se hace, con lo que al final es posible que veamos programas "para profesionales" y otros desarrollados a bajo nivel por gente más aficionada donde haya reglas que limiten el número de funciones del lenguaje usado.
  15. #112 Eres claramente un tío mierdas, te lo digo con todo el desprecio del mundo, vete a tomar por el culo gilipollas.
  16. #34 Por lo que más quieras: legibilidad.
  17. vaya, el centro del universo se ha enfadado.
  18. #88 ¿Tan complicado encuentras pulsar AltGr + ç o AltTGr + ´ ?
  19. #120 Pues sí, la tecla AltGr está en una posición muy incómoda y además sólo hay una y queda en la misma mano que la otra tecla que hay que pulsar para escribir el corchete.

    Es de las pocos caracteres para los que necesito mover toda la mano en lugar de uno o dos dedos y casi siempre tengo que mirar el teclado porque una vez quitada la mano de su posición para pulsar el AltGr no sé donde queda el ' o el ç. Si al menos hubiera otra AltGr en la otra mano seria mucho más cómodo.

    La tecla AltGr me queda bien para escribir, por ejemplo, € porque pulso esa tecla especial con una mano y escribo el carácter con la otra (con lo que ninguna pierde su posición en el teclado), pero para los corchetes un engorro porque sí lo hago.
  20. #64 Obviamente hay evoluciones, y cada día surgen nuevos lenguajes de programación que mejoran los existentes, en eso estoy de acuerdo. Sólo hago referencia a que cada lenguaje tiene sus particularidades, que pueden gustarte más o menos, pero son las que tienen...independientemente de que en un futuro no muy lejano evolucionen.
  21. #75 Estoy de acuerdo contigo.
  22. #116 Sí, ese riesgo de la "jerga" siempre está ahí, pero por suerte las herramientas de análisis estático en JS están cada vez más pulidas (como "xo") y pueden reparar códigos que a simple vista uno preferiría volver a escribir antes de enfrentarse a ellos :-D

    La verdad es que en los últimos años todo mi acercamiento a JS, ya fuese en el front con React o Vue o en back con Node ha sido a través de Typescript. Y ya últimamente, en VSCode, en el que Typescript se integra perfectamente y que han acabado convirtiendo la experiencia de programar para el browser en una actividad insospechadamente placentera xD

    Y respecto a los espacios en blanco, debo reconocer que es algo que he tenido que ir corrigiendo a lo largo de los años. Recordándome que los enters son gratis, que el código está hecho principalmente para ser leído y obligándome a pensar en ocasiones en cómo vería ese código si no lo hubiese escritro yo, lo que me ha hecho en muchas ocasiones sustituir one-liners con atajos como los que comentas por dos o tres líneas mucho más evidentes a simple vista.

    A mi juicio, que sea sencillo y explícito son las mejores cualidades que puede tener un pedazo de código cualquiera. Y después viene todo lo demás.
12»
comentarios cerrados

menéame