Commits

Alfonso de la Guarda Reyes  committed 51b2c9a

Draft Cap. 2 y Adiciones en Metalibro

  • Participants
  • Parent commits e5f42d2

Comments (0)

Files changed (2)

 
 Conforme avancemos en el libro es importante que consideres la importancia de los valores lógicos en Python ya que dentro del lenguaje se considera una buena práctica hacer uso de éstos.
 
+
+Tipado (Casting)
+~~~~~~~~~~~~~~~~
+
+En el desarrollo del capítulo hemos establecido los diversos tipos (básicos) de Python, pero: *qué pasa cuándo necesito que un tipo de dato se convierta en otro?*.  Uno podría decir que esto no es habitual, pero en realidad lo es, intentemos en el intérprete::
+
+    >>> a = "uno se representa con el número"
+    >>> b = 1
+    >>> print a + b
+    
+Salió un error, verdad?::
+
+    Traceback (most recent call last):
+      File "<stdin>", line 1, in <module>
+    TypeError: cannot concatenate 'str' and 'int' objects
+
+Bueno, lo que sucede es que Python no puede juntar dos datos de diferente *tipo* y entonces, el maravilloso intérprete, nos muestra un error para así corregir el problema.  Para solucionar esto hacemos uso de las funciones de tipado o *casting*:
+
+    **int()**
+        Convierte un valor a entero.
+    **float()**
+        Convierte un valor a punto flotante.
+    **str()**
+        Convierte un valor a cadena.
+    **bool()**
+        Convierte un valor a booleano / lógico.
+
+El uso es muy simple::
+
+    >>> print a + str(b)
+
+Nos permite ahora convertir el número *1* en una cadena y el resultado será otra nueva cadena **"uno se representa con el número 1"**.  Obviamente los valores que deseamos convertir deben ser *compatibles* con el nuevo *tipo*, es obvio que saldrá un error si hacen esto::
+
+    >>> int(a)
+
+Cómo diablos el intérprete puede convertir toda esa frase en un número? Ni que fuera inteligente!
+
+
+Uniendo las piezas
+~~~~~~~~~~~~~~~~~~
+
+Muy bien, llegamos a un punto en donde ya podemos hacer un programa mínimamente interactivo, digo esto, porque ya sabemos como visualizar e ingresar valores y además guardarlos en memoria a través de las *variables* y sus diversos *tipos*.  Es decir: podemos unir las piezas (que es lo interesante de la programación), pero nuestro valor añadido es la "lógica", el algoritmo dentro de nuestro programa, lo que lo convierte en algo útil, interesante, importante, rentable, etc.
+
+Con el intérprete hagamos un experimento::
+
+    >>> n = raw_input("Ingresa tu edad: ")
+
+Ya conocíamos **raw_input** pero no lo habíamos usado para guardar nada, así que lo único que hemos hecho es almacenar el resultado de lo que ingrese el usuario a la variable *n*.
+Ingresa, entonces, el número que gustes, digamos *23* y luego:
+
+    >>> print 2011 - int(n)
+
+El resultado que nos aparecerá es *1988*, pero para llegar a esto tuvimos que "tipar" la variable *n* puesto que la función **raw_input** nos permite ingresar *cadenas* y para efectuar la resta necesitamos que el valor ingresado sea un *entero* (**int**).
+
+A esto me refiero con unir las piezas! Podemos ir integrando cada concepto que aprendamos en nuestros programas y hacerlos más ambiciosos y complejos.
+
+
+Ejercicios
+~~~~~~~~~~
+
+    # Desarrolla un programa que *salude* según el nombre del usuario.
+    
+    # Ahora haz un programa que calcule el área de un triángulo dado por el usuario.
+    
+    # Prueba haciendo fallar tus programas, obviando el *tipado* o escribiendo alguna función mal.  De los errores se aprende. 

File metalibro.rst

 El Meta-Libro
 -------------
 
-	"Escribir es un asunto privado." 
 
-	-- Goldbarth 
+Hace años debía haber hecho esto: un libro, la verdad es que aún es una deuda pendiente conmigo mismo hacer uno completamente propio, pero bueno, escogí hacerlo de esta manera, es decir, tomando el trabajo de un pythonero como Raúl Gonzáles Duque para modificarlo, potenciarlo, mejorarlo, actualizarlo y -lo más importante- prepararlo para que cualquier persona que desee aprender programación.
 
-Una de las intenciones de este experimento escribir-un-libro fue hacerlo "en
-publico". ¿Porqué?
+Aprovechando de la maravillosa licencia Creative Commons, he tomado la obra "Python para Todos" de Raúl Gonzáles Duque como referencia para este *nuevo libro* que he denominado: "Python para Todos Reloaded", bueno -obviamente- el último término lo cojo de "Matrix", pero esta vez la obra debe ser mejor que la versión previa.
 
-* Me gusta mucho el open source. Trato de aplicarlo en muchas cosas, aún en
-  aquellas en las que no se hace habitualmente. Por ejemplo, si bien no acepto
-  colaboraciones para el libro, si acepto parches.
+Creo que tengo mucho que contar de mi experiencia en la informática y -de hecho- me encanta cuando me invitan a conferencias para contar lo que hago... y mucho de lo hago, hoy en día, es en Python.
 
-* En mi experiencia, si hay gente que le interesa un proyecto mío, entonces es
-  más probable que no lo deje pudrirse por abandono. Creí (aparentemente con
-  razón) que a la gente de PyAr le interesaría este proyecto. Ergo, le vengo
-  poniendo pilas.
+Tomé el trabajo de Raúl Gonzáles como referencia temática y he mantenido varios contenidos, aunque corrigiendo aspectos no sólo gramaticales sino computacionales, además -obviamente- de agregar material nuevo, incluyendo capítulos enteros.  De hecho, la obra original de Raúl es buena, pero ya lleva años sin actualizaciones y no abarca una serie de temas importantes para el mundo Python en la actualidad, adicionalmente, en algunos puntos pierde su alcance pedagógico, así que había que trabajar en corregir todo esto.
 
-* Los últimos quince años metido en proyectos open source y diez años de blog me han
-  convertido en una especie de exhibicionista intelectual.
-  Idea que me pasa por el bocho la tiro para afuera. O la hago código, o la hago
-  blog, o algo. Este libro es algo así, tuve la idea, no la puedo contener en mi
-  cabeza, la tengo que mostrar.
-  
-Y uno de los efectos de querer mostrar el libro mientras lo hacía es que *tengo
-que poder mostrarlo* y no tiene que ser algo demasiado vergonzoso estéticamente
-y tiene que poder leerse cómodamente.
+Para editar el libro tomé la decisión de hacerlo con texto re-estructurado (al cual le estoy tomando un especial cariño hace un tiempo) y no pude encontrar una mejor manera de organizarlo/desplegarlo que tomando el trabajo que hizo Roberto Alsina para su libro "Python No Muerde", es así que hice un *clon* de su repositorio y lo adapté a mis necesidades estéticas y literarias.  Por cierto, luego de terminar con este libro, les recomiendo dar una revisada al trabajo de Roberto con el suyo, es simplemente genial, uno de los mejores contenidos que he leído sobre Python.
+
+Este libro es para quienes quieren aprender a programar, quienes quieren programar con Python o quienes quieren conocer de qué trata Python y qué ofrece.  Mi objetivo es simple: que se pueda enseñar Python desde el principio y que el lector/alumno pueda tener una visión del campo de acción del lenguaje.
 
 Como ya es casi natural para mí escribir reStructured text (hasta los mails me
 suelen salir como reSt válido), busqué algo por ese lado.