Hace 4 años | Por mr_b a drive.google.com
Publicado hace 4 años por mr_b a drive.google.com

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.

Comentarios

neno0

print ("Mis dieses")

topazo

#4 Los paréntesis tienen que ir pegados a la función: print('Mis dieses')

neno0

#12 if nombre_usuario == topazo
print ("pos ok tio")

rmdf

#18 Tío, pon los ":" y mantén la indentación

topazo

#20 Además de que ni ha declarado nombre_usuario...

neno0

#29 no iba a escribir eso obviamente...

D

#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...

eldarel

#20 y los espacios, que la legibilidad es importante

soytumismo

#12 #18 #20 Buscaros un hotel !!!
Mira que ponerse en publico lol

topazo

#18 SyntaxError, te falta : al final de la comparación.

S

#18 no indentation, no party.

topazo

#23 Casi cualquier IDE te va a marcar como indentar eso. A mi personalmente me parece una maravilla la indentación. Es lo que le da la gran "readability" a Python, y esa es una de las mejores cosas que tiene Python, ves un código y lo lees como si fuera un texto casi. Tambien si quieres puedes hacerte el chulo y hacer todo en una linea:
print('pasa') if edad > 9 or altura > 1.0 else print('no pasa')
Pero hacer eso asi precisamente choca con el dogma de python.

orangutan

#34 #23 Otra opción aún más simplificada:
print("pasa" if edad > 9 or altura > 1.0 else "no pasa")

topazo

#43 Esa es buena, nunca lo he usado asi y llevo mas de 3 años trabajando con Python profesionalmente. Para que luego digan que no es flexible!

m

#45: En JS y en C creo que también se puede hacer eso, pero va de otra forma.

printf("%s", ( edad > 9 || altura > 1.0) ? "pasa" : "no pasa");

orangutan

#73 Conozco la sintaxis de C con respecto al operador ternario, pero la de python no la conocía hasta hace poco.

m

#34: ¿Cómo sabría el editor si "texto A" va dentro del else o no?

El problema de Python es que un código copiado y pegado desde un PDF es ambiguo, con las llaves de C no ocurre eso.

Entonces, que me vendan ese lenguaje como mejor... pues no.

topazo

#46 No creo que nadie este diciendo que el lenguaje es peor o mejor, se usa para distintas cosas. No creo que vayas a ponerte a crear una pagina web usando C no? Por lo mismo que normalmente no vas a hacer un SO o un videojuego con Python, que puedes, ojo, pero no es su principal fuerte.
En cuanto a cual debe ir dentro y cual no, pues tambien habra que dejar que quien esta aprendiendo piense un poco no? Saber donde poner y como un codigo es el 10% del trabajo de un programador, el resto es copiar y pegar de stackoverflow.

D

#34 Por lo que más quieras: legibilidad.

orangutan

#33 Mejor el ensamblador, donde va a parar

D

#35 Mejor un lenguaje procedural fuertemente tipado con manejo explicito de memoria. Luego transicionar a orientacion a objetos y recolector de basura. Por ultimo leguajes de alto nivel como Python.

Ensamblador se tiene que aprender en la carrera en asignaturas de arquitectura de computadores.

eldarel

#38 ¿Recomiendas empezar por c, luego Java y por último Python?
Coñe, voy a haber seguido una buena práctica de chiripa.

kaostias

#59 De hecho es lo que se suele reconendar, sí. Yo empecé por java, luego aprendí c y luego CUDA, la broma es que acabé en java de nuevo

D

#59 Al principio seria mejor algo mas estricto que C, tipo ADA o similar. Pero a mi tu evolucion me parece correcta y te habras 'formado' (en principio) de forma mas completa que alguien que haya empezado directamente con Python.

Conde_Lito

#35 Pues depende para que incluso en código máquina, para determinadas cosas es mucho más fácil e intuitivo comunicarse directamente, programar directamente la electrónica del ordenador o aparato electrónico.

Realmente el código máquina no es más que una traducción literal del ensamblador, cuando metes un opcode en ensamblador lo haces porque memotécnicamente es más fácil y mucho más corto a la hora de escribirlo, pero básicamente le estás diciendo al micro, por esta pata te meto un 1, por esta otro 1, por esta un 0 y por esta otro 1 y así sucesivamente pero con letras y de forma abreviada.

orangutan

#85 Estudié informática y he programado en ensamblador hace muchos años, así que no conoceré el último lenguaje pero eso lo tengo claro.

D

#33 ¿Y con qué se debería aprender a programar?

m

#40: En mi opinión con C o C++. ¿Que es complicadillo? Tal vez, pero luego de ahí saltas casi a lo que quieras.

Tampoco es cuestión de estudiar C en toda su potencia, pero si para tener una noción básica (estructuras de código, tipos de datos, vectores, matrices, un poco de asignación dinámica de memoria, un poco de formateo, un poco de ficheros...).

De C++ me quedo con su sencillez para entrada y salida de datos (con "los piquitos"), pero para conocer más un ordenador "en crudo" es peor que C. Tampoco es cuestión de hacer ensamblador (algo que debería conocerse a modo de noción, sin programar). Puede pareceros demasiado hablar de ensamblador (sin usarlo ni tener que memorizar), pero a lo mejor la gente dejaría de pensar que el ordenador es el Espíritu Santo y que hace los milagros que le pidas.

Si no se exagera, es asequible para mucha gente y se tiene una base buenísima, ya no para programar, sino para más o menos saber qué es un ordenador y qué puede hacer y qué no.

x

#40 Pues con BASIC, como toda la vida.

Si ya es TurboBASIC, QuickBASIC o GWBASIC ya es un tema de sabores. Pero todo el mundo debería conocer GOTO y, opcionalmente, GOSUB.

soytumismo

#60 ¿Por qué te votan negativo?
De verdad, la gente no tiene sentido irónico.

#33 Ni se te ocurra Basic, ni de coña.
Si quieres una sintaxis sencillita Pascal, pero si apuestas fuerte C o Java.

x

#80 Amargados de la vida que no aceptan que JavaScript es el BASIC de los millenials.

#33 cualquier lenguaje imperativo con el que conocer las estructuras de control y funciones/procedimientos. La sintaxis es irrelevante.

También evitar los lenguajes orientados a objetos, al menos al principio. No se debería hacer OO hasta pasar por Patrones y tener un mínimo de experiencia. Eso descarta Java, Smalltalk y Objective-C.

También descartaría el uso de librerías aunque sean las standard. Cuando aprendes a programar, estás aprendiendo algoritmos (bucles, condiciones) y a estructurar tu código (funciones/procedimientos), no a usar librerías.

Tienes que programar estructuras de datos antes de usar estructuras de datos.

Aprender a programar pasa por sufrir a fuego el mantenimiento de código spaghetti alguna vez para no hacerlo jamás o leer código identado 80 columnas y dejar media pantalla vacía.

Luego pasas por libros de algoritmos y el concepto de coste.

A partir de ahí, pues depende de para qué vayas a programar: que si frontend web, aplicaciones nativas, backend...

soytumismo

#83 Tienes toooodaaa la razón, odio javascript.
Tuve unos NodeJS y siendo todo código, donde hasta los logs dependen del programador, de lo que le salga de los cojones; lo tenía que administrar yo.

Horrible, soñaba con esa puta mierda. Administrar código, claaaroooo.

Tiberina

#28 Eres fan de las !!! En todos los post que se habla de Python criticas la indentación y la falta de llaves, cuando creo que esto es una apreciación tuya....Deberías de pensar que cada lenguaje tiene sus particularidades y ya está...Python es estricto a la hora de escribir, y Java con el tipo de datos...¿Por qué no se usa en Java el tipo de dato igual para todo? Pues porque es un lenguaje fuerte tipado, molaría que fuera como Perl o Js que con un tipo de variable pues te vale para casi todo, y así no pensar.... pero no. Yo quiero a los lenguaje de programación por cómo son (cada uno tendrá sus cosas buenas o malas) pero son como son, no hay que darle más vueltas.
Y si pretendes hacer un "copipaste", sin tener que corregir indentaciones... lo llevas claro, porque a mí por ahora, la mayor parte de las veces que he copiado algo me ha tocado retocarlo, pero no sólo en Python, sino en otros muchos lenguajes....

I

#41 Precisamente en Java hay 'evoluciones' (Kotlin, Groovy) para hacerlo menos estricto con los tipos y Typescript para hacer lo contrario con Javascript. Pero eso no es problema. El problema con Python (o más bien sus fans) es que intentan convencer que no usar llaves y sí indentado obligatorio es una ventaja, cuando crea más problemas de los que resuelve.

Tiberina

#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.

Powertrip

#41 "no hay que darle más vueltas". Si Torvalds hubiera dicho "ya tenemos MS-DOS, no hay que darle más vueltas" estaríamos donde Microsoft quisiera. Esa forma de pensar es anti-ingeniería

Tiberina

#75 Estoy de acuerdo contigo.

M

#28 Escribir llaves con un teclado en español es un dolor de cabeza, mucho mejor indentar.

Lo hacen por "nosotros"

D

#88 ¿Tan complicado encuentras pulsar AltGr + ç o AltTGr + ´ ?

Shotokax

#28 si pegas texto en LibreOffice te respeta los espacios.

selina_kyle

#28 Es que cuando entregas el TFG tienes que entregar los ficheros a parte obligatoriamente. En la vida vas a ver a un profesor copiando el codigo del PDF en su editor y compilando, ademas que es una cutrez sin sentido.

Decir que esa es una debilidad de Python es como decir que los demas lenguajes son peores por depender de las llaves, porque ¿y si en tu teclado se te rompe la tecla de la llave { eh, eh, eh? a ver que haces ahora listo????? vas a estar todo el rato copiando y pegando llaves???

A que es una gilipollez? pues eso.

m

#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.

orangutan

#50 ¿Conoces algún manual/tutorial de TypeScript interesante?

prejudice

#51 Creo que yo partí de la documentación oficial de TypeScript que creo que está en inglés. No obstante, si ya has usado JavaScript, prácticamente ya sabes casi todo lo necesario para empezar con TypeScript
Yo typescript lo uso en dos partes de una aplicación web:
-> Para el cliente en angular (obligatorio typescript, no confundir angular con angularjs) que consume datos del servidor REST
-> Para el servidor REST en nodejs usando express pero con código typescript transpilado a código javascript.

Tengo en mente hacer algún tutorial de como combino ambas cosas en un mismo repositorio git, y como lanzar todos los procesos que hacen falta para que funcione (tanto en desarrollo como en producción) usando pm2. No obstante existe multitud de información de en la red.

D

#50 Si acumulas mas de 4 niveles de indentacion tu complejidad ciclomatica esta por las nubes, tu codigo no se puede testear de forma razonable y hace demasiadas cosas.

A Python lo podemos criticar por un millon de cosas, pero el que te "impida" (que no lo hace) indentar mucho vendria a ser algo positivo mas que negativo.

El problema de la indentacion es que puede dar lugar a errores inesperados que con llaves no existirian. Por eso en C se recomienda poner siempre llaves incluso si tu 'if' es de una sola linea: para ser explicitico en el contexto.

La falta de llaves tambien hace que el minimo contexto de las variables en python sea a nivel de funcion / metodo. Otros lenguajes (como Perl) el contexto de variables es de bloque, y su vida se reduce a dentro de los . Esto hace que el codigo sea mas robusto.

D

#14 ¿Para qué siempre lo tengas que teclear, qué ganas con eso? pregunto.

orangutan

#11 Indentar es bueno, ayuda a la legibilidad del código. Y si el editor indenta automáticamente, ¿cual es el problema?

D

#11 ¿En serio consideras una debilidad que no puedas hacer C&P de un cacho de código que te encuentras por la red y no funcione directamente?

Menudo peligro.

r

#11 Que sea un lenguaje que cueste programar usando el bloc de notas es una ventaja!
Igual se recomienda usar espacios para indentar (en todo caso los editores serios convierten los tabs en espacios para comodidad) y ahí no hay problemas en el copiar pegar.

editado:
ahí entendí, el problema es el trim que está haciendo menéame en los comentarios, bueno, en cualquier foro de programación hay tags para específicar código...

if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')

m

#78: Y tan trim, en el PDF es igual.

Por eso me gusta más JavaScript y C, eso si, bien indentados, pero con sus llaves para separar el código.

Shotokax

#11 ¿no será que el bloc de notas, si se salta caracteres de espacio, es una mierda?

selina_kyle

#11 Esa es una situacion ficticia que nunca va a pasar. Todo el codigo que copies esta indentado, y el IDE te lo va a saber reindentar donde lo pegues sin problema.

m

#90: Depende, si pegas el código aquí creo que si se pierde el indentado.

D

#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
https://github.com/denysdovhan/wtfjs

D

900KiB

¿Eso en campos de fútbol cuánto es?

D

Gracias, le echaremos un ojo.

Últimamente estaba usando finxter, que te propone muchos problemas de python y tienes que averiguar la solución. Rollo gamification:

https://app.finxter.com/learn/computer/science/

Pero llegado a un punto ya tienes que pagar una pasta para seguir usandolo. Alguien conoce algo parecido con ejercicios amenos y tal?

orangutan

#7 Conozco varias apps para móvil, como Py, Enki, SoloLearn y Learn Python . Apenas las he usado así que tampoco te puedo recomendar ninguna en concreto.

D

#27 Voy por ellas a ver. Thanks

d

#7 exercism.io

D

#63 Parece chula. Dank je!

d

#68 Gern geschehen!

d

#76 aqui tienes otra!
https://www.codewars.com

D

#26 Estaría bien que usando este mismo manual introdujeses como aporte los conceptos de los que hablas, así quedaría más completo y sería de gran utilidad para los principiantes.

D

#26 Entiendo tu razonamiento, pero, y es solo mi opinión, ¿porque no se lo explicas al autor y echas una mano en otra edición del documento?

Yo vengo de JAVA y quiero empezar con python y este manual no me parece un mal punto para comenzar. Ojo, y creo saber patrones de diseño y demás fanfarrias.

axíes

Gracias, señor #0

dballester

#31 si alguien está aprendiendo a conducir y tu ves que nadie le dice que no debe hacerlo borracho o drogado, ¿tu le advertirías? Pues añade esa información al documento, haz un manual práctico tu o al menos crea una lista de sitios interesantes donde otros se puedan formar. De esa manera, dejas patente tu opinión respecto a lo que se debe aprender y al mismo tiempo das los medios para que sea posible

D

#0 Bajado, gracias!

protogenes

Muchas gracias. Yo ahora estoy empezando a aprender C como hobby (no soy programador) con el libro de Ceballos, pero me llama mucho la atención Python, así que para la saca

m

#22: Ya verás cuál es mejor para copiar y pegar código de la red.

b

muy buen aporte, gracias

iluap

Yo flipo con algunos comentarios: alguien sube un recurso para gente que no tiene ni idea de programacion (yo, por ejemplo, que ya le estoy echando un vistazo) y la gente se le echa al cuello, al igual que al autor del documento. No solo eso sino, que cada uno, dependiendo de su experiencia, recomienda millones de cosas contradictorias entre comentarios. La gente que no sabemos agradecemos aportes como estos que van cortita y al pie. El que no este de acuerdo podria mandar sus aportes o crear un documento mejorandolo o de otro lenguaje.
Yo paso de pedir recomendaciones, no parece que haya un estandar para aprender, solo puedo echar vistazos a cosas como estas e intetar aprender.

soytumismo

#82 Tooooda la razón.
Yo por mi parte he dado las gracias y guardado en lugar seguro.
Me peleo con jython y le viene muy bien, la verdad.
Pd: no soy programador, soy del lado oscuro, sistemas.

D

No cuentan cómo se hacen gráficas en pantalla. ¿De qué te sirve un manual si no te dice cómo hacer gráficas en pantalla? tiene que ser el primer capítulo. Aunque sea solo poner un punto en pantalla, y por ilusionar al personal.

soytumismo

#25 Abueeeloooo lol

Powertrip

no conozco Python ¿en qué ámbitos se usa Python? Supongamos que soy programador java ¿para qué podría serme útil?

soytumismo

#77 En mi campo (sistemas) puedes hablar con los weblogics o WebSphere con jython, es lo mismo básicamente pero usas la api del webserver.

Por otro lado, puedes hacer scripts para automatizar tareas que recurran a ciertos servicios, por ejemplo insertar algo en una bbdd. Yo lo tengo para tener control de las vms que tengo.

Powertrip

#95 entonces el uso es el mismo que shell script más o menos ¿no? supongo que aportará más cosas que shell script

Hart

No todos los héroes llevan capa #0
Es justo lo que buscaba

Nova6K0

Los primeros diez capítulos como indentar correctamente, porque Python es como un niño caprichoso.

Salu2

LeDYoM

#0 Ahora sabemos tu nombre?

mr_b

#2 No tengo nada que ver con este manual más que el ser un usuario más

Corvillo

#5 Vale, Javi, lo que tu digas 😉 😉

V.V.V.

#5 Le he echado un vistazo y está genial. Mil gracias, tío.

d

Edited

m

#9:

s

Me parece un recurso de 10, mis dieses!! Hay un montón parecidos a este en https://apuntesfpinformatica.es/

ytuqdizes

#0 gracias, tiene muy buena pinta!

t

muchas gracias #0

soytumismo

Millones de Gracias.
Descargado y almacenado en RAID, seguro que haré buen uso de él.

jhoker

Si hubiera tenido algo así hace 15 años mi carrera profesional seria muy diferente.

D

gracias!

P

#26 si alguien cree que con un conjunto de prácticas de un libro de 90 páginas puedes hacer desarrollos profesionales tiene un problema.

Si alguien encargado del equipo (jefe de proyecto, CTO, Scrum Máster...) Contrata a alguien así sin pensar en formarlo más... Tiene un problema.

Si, además de contratarlo, no se da cuenta de que no resuelve adecuadamente, tiene 2 problemas.

Tu que quieres enseñar a diseñar a alguien que no sabe lo que es siquiera programar... Tienes varios problemas.

D

#99 Yo tengo muchos problemas, en forma de código de mierda por todas partes.

Y es que creo firmemente que lo siguiente que debe enseñarse después del hello world, herencia y polimorfismo, son nociones básicas de buenas practicas.

Sencillamente, no quiero que nadie que no tenga dichas nociones sepa programar.

D

¿Es una broma?

¿Y el capítulo explicando la importancia de la inyección de dependencias y de que uno no debería programar nada más grande que un script de 500 líneas sin manejarlas?

¿Y el de los unit tests como requisito mínimo para comprobar que tus clases hacen lo que tienen que hacer?

Explicar cómo programar sin dar nociones sobre esos temas es como enseñar a alguien a conducir sin decirles que no se puede conducir borracho o drogado.

D

#19 Es una irresponsabilidad como una casa. Luego nos echamos las manos a la cabeza cuando llenan npm (pyp no se que controles aplica) con basura.

Por lo menos debería poner un disclaimer diciendo que el tutorial solo es valido para hacerte un script chorra para editar metadatos de ficheros o cosas por el estilo. A la que tienes 2 o 3 clases y no estás utilizando inversión de control y unit tests, lo único que estás haciendo es contaminar el ecosistema.

Es mejor que alguien no sepa programar en un lenguaje orientado a objetos, a que sepa hacerlo y no conozca la importancia de esos conceptos. Vuelvo al ejemplo de enseñar a conducir sin explicar que no se debe conducir borracho.

D

#24 ¿Que garantías tenemos de que las personas que aprendan con tutoriales como estos no publiquen sus paquetes en npm/pyp/nuget o que creen artículos en sitios como Medium explicando lo que hacen?

A la que tienes 2 o 3 clases y no estás ya implementando buenas prácticas, eres un peligro, lo hagas a titular personal o profesional.

P

#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.

Powertrip

#24 Tarkedo en parte lleva razón. El manual es un "manual de sintaxis de Python", no un "manual de programación". El simil con los coches sería más bien "manual de pedales y botones del coche" en lugar de "manual de conducir".

1 2