miércoles, 22 de agosto de 2012

Python parte 2


Bue... si se aguantaron la primera parte del tuto quiere decir que de verdad les interesa o que yo tan mal no escribo y no les queda otra que bancarme. :-)

Ya para este momento creo que habran investigado un poco y estaran mas familiarizados con el interprete y podran abrirlo mas tranquilos. Existen otra posibilidades para acceder a la línea de comandos, pueden usar Idle, tal vez el mas usado, este permite acceder a python de la misma manera que si usaran el llamado al interprete. Tambien pueden usar Ipython, si están en linux, este esta muy bien pensado y tiene la ventaja de auto completado cuando pulsamos la tecla tab.



Idle



iPython

Antes de seguir recuerden lo siguiente... en python la identacion de codigo son 4 espacios (1 tab), esto deben respetarlo, sino veran errores espantosos y van a renegar con el codigo sin necesitad


3..2..1.. inicien sus Python Shell !!!

Antes que nada debemos saber comentar codigo, esto se logra usando # para comentar una linea o """comentario.... """ para comentar varias lineas... vemos un ejemplo

>>> a = 3.14 # Este es el numero pi

>>>"""
    Este es un comentarios mas largo
    para ver que tanto
    podemos escribir
    solo es necesario
    seguir escribiendo
    y escribiendo
    y escribiendo.
"""

Como se puede ver esto no produce error, los comentarios siempre se los deja de lado, pero hay que marcar lo siguiente, siempre son utiles y no estan demas, dentro de unos cuantos meses mas adelante tengamos que volver sobre nuestro codigo, por mas que este ordenado y super prolijo, no vamos a recordar por que escribimos esa funcion o por que comentamos esa linea, por lo tanto los comentarios va a ser nuestro unico aliado y que nos va a explicar que queriamos hacer.

Ahora vamos a ponernos mas tec3..2..1.. inicien sus Python Shell !!!nicos en esta segunda parte. Vamos con lo basico... variables, esos simpaticos espacios reservados de memoria que guardan nuestro datos.

Si vienen de otro lenguaje estaran acostumbrados a ellas, para los que no tienen ni la mas remota idea les cuento que son, por decirlo de manera vulgar, como cajas donde podemos depositar valores, sean cadenas de texto, numeros u objetos mas complejos.


A diferencia de otros lenguajes en python no se precede de nada el nombre de una variable, aca no existe eso de ponerle $ delante, tampoco debemos declarar el tipo al cual pertenese. Nada de decirle si es integer o varchar, aca la cosa es mas simple:




Si se quiere y se necesita se puede inicializar o sea la variable declararla con un valor x pero nada mas.

Noten tambien que no hay ; para terminar una linea de codigo, esta bueno esto no? pero no todo es simple si hay algo que si van a tener que acostumbrarse en python es a ser ordenados, dije antes que no hay un caracter especial para terminar una linea, pues tampoco hay para encapsular lineas de codigo dentro de un ciclo for o un if solo se usa identacion, pero por ahora solo tengan eso en mente y recuerdenlo que mas adelante lo vamos a usar.

Bien ahora tenemos dos variables que contienen un numero y otra un texto, que podemos hacer con todo esto? realmente no mucho, pero vamos a probar sumar 2 variables:




Buenisimo, podemos aplicar el mismo concepto para restar, multiplicar y dividir.


Y si nos equivocamos....




y si uno quiere pedir algo que no existe tambien avisa...



Bueno en este caso donde hemos querido hacer una division por 0 vemos que es bastante claro python respecto al error en la operacion.

Siempre una de las cosas que me ha gustado de python es eso... cuando uno mete la pata dice perfectamente donde...

Tambien con el manejo de variables donde tengamos valores de tipo integer y debamos pasarlos a float sera muy simple:


>>> a = 1

>>> float(a)
1.0

y esto puede ser tambien a la inversa, de float a integer:


>>> a = 21.12

>>> int(a)
21

noten que quita los decimales, por mas que sea 21.67, no aplica redondeo...


Existen tambien todo el conjunto de operaciones matematicas:


abs()

sqrt()
round()
max()
sum()
...


Pero bueno descargamos 15 megas para tener una calculadora?

Python es mas que una calculadora... podemos hacer tambien tratamiento de variables de texto.
Hasta ahora habiamos probado hacer:

>>> a = 'hola mundo'

hola mundo

pero que mas...


saber la cantidad de caracteres:


>>> len(a)

10

ver el primer caracter de la cadena:


>>> a[0]

'h'

esto es asi por que python trata al string como un array de caracteres, podemos entonces pedirle una determinada cantidad de caracteres:


>>> a[0:4]

'hola'

esto es [inicio:fin], tambien podemos hacerlo asi:


>>> a[:4]

'hola'

podemos tambien hacer:


>>> a[4:]

' mundo'

>>> a[-4:]

'undo'

y asi podemos seguir, se puede hacer mucho... y si quiero concatenar 2 string


>>> a = 'hola'

>>> b = 'mundo'
>>> a + b
'holamundo'

a ver un poco mejor...


>>> a + " " + b

'hola mundo'

tengo una cadena que tiene espacios al final.... no hay problema


>>> a = 'hola       '

>>> a.strip() + " " + b
'hola mundo'

Bueno tengo un temita mi amigo tiene de apellido O'Reilly.... pues hay dos maneras de hacer las cosas:


>>> x = 'O\'Reilly'

>>> x
"O'Reilly"

>>> x = "O'Reilly"

>>> x
"O'Reilly"

Hay que tener especial cuidado con los caracteres especiales



>>> a = u'Este año va a ser fantastico'

>>> a
u'Este a\xc3\xb1o va a ser fantastico'

Como verán lo que escriben a lo que finalmente se guarda cuando indicamos que la codificación es de tipo UTF-8 es muy distinto. Pero esto de trabajar con caracteres mas allá de 128 es todo un tema.


Como podemos entonces ver lo que guardamos... 

Si bien asta ahora siempre usabamos poner el nombre de la variable y de inmediato era mostrado su contenido hay maneras un poco mas "prolijas"... y esta es usando un print.

>>> print(a)

Este año va a ser fantastico

Muy bien hasta aca, parece funcionar todo, ahora vamos con esto... queremos hacer que el print nos muestre dos valores o mas...



>>> a = 'a'
>>> b = 'b'
>>> print(a, b)
('a', 'b')

mmm si es mas o menos lo que queriamos, pero si queremos algo mas entendible ?

>>> print("variable 1: %s y esto es la variable 2: %s" % (a, b))
variable 1: a y esto es la variable 2: b

heee como es eso? Pues existe la posibilidad dentro del print de hacer que los valores que nos interesan sean presentados en determinadas posiciones, eso se logra usando %s dentro del texto que nos interesa y una vez terminado el texto indicamos por medio de %  y entre () las sustituciones (mapeo) que debe aplicar, esto es en orden, o sea que 'a' sera en el primer %s que este en el texto 'b' en el siguiente y asi...
Bien entonces... probemos algo...

>>> a = 42195
>>> b = 'maraton'
>>> print("La distancia de %s es de %s metros" % (b, a))
La distancia de maraton es de 42195 metros

Entonces podemos ver esta lista y podremos empezar a dar formato a nuestras salidas de texto..

Para obtener el caracter ‘%’ como salida, no se cuenta como argumento
Entero con signo
Entero con signo
Octal con signo
Dexadecimal con signo (minusculas)
Hexadecimal con signo (mayusculas)
Punto flotante notación exponencial (minusculas)
Punto flotante notación exponencial (mayusculas)
f Punto flotante.
F Punto flotante.
g Punto flotante. Usa notación exponencial en minusculas si el exponente es menor que -4, se ocupara la notación normal de otro modo
G Punto flotante. Usa notación exponencial en mayusculas si el exponente es menor que -4, se ocupara la notación normal de otro modo
c Caracter simple (acepta un entero o una cadena de 1 caracter)
s Cadena (convierte todo objeto Python usando str())


a ver probemos...


Imprime con 4 decimales:
>>> print("%.4f" % 3.141592)
3.1416

8 caracteres los espacios se llenan con blancos:
>>> print("%8.4f" % 3.14)
3.1400

8 caracteres los espacios se llenan con 0:
>>> print("%08.4f" % 3.14)
003.1400

Visualizar un entero como flotante:
>>> print("%.2f" % 10)
10.00

Decimal se rellena con blanco los espacios
>>> print("%5d" % 10)
   10

Decimal se rellena con 0 los espacios
>>> print("%05d" % 10)
00010

Se imprime en octal
>>>print("%05X" % 10)
0000A

se deja 10 espacios y se puede justificar a la derecha:
>>> print("'%10s'" % "dado")
'      dado'

si se usa un signo - se puede justificar a la izquierda:
>>> print("'%-10s'" % "dado")
'dado      '

Para mostrar los signos de los numeros usamos el signo +:
>>> print("%+d  %+d" % (1,-1))
+1  -1


Te surge la duda de por que uso print("....") y no solo print "...." como se hace en libros u otros tutoriales... pues la idea es que vayan acostumbradose a la sintaxis de Python 3 solo por eso, en Python 3 la sentencia print es sustituida por la funcion print().

Buenisimo.. y si quiero hacer el clasico ejemplo de saludo ingresando mis propios valores...
para eso usemos raw_input de la siguiente manera:


>>> nombre = raw_input("Cual es tu nombre:")
Cual es tu nombre:marcelo
>>> print("Hola %s !!!" % nombre)
Hola marcelo !!!

por que usar raw_input y no input.. pues input evalua que el ingreso sea un numero mientras que de la otra manera se puede ingresar caracteres y numeros.

Si se quiere convertir la entrada a un numero se puede hacer de la siguiente manera...

>>> el_valor = int(raw_input("ingrese el valor:"))

Por lo tanto siempre es mejor usar raw_input y nos olvidamos de un monton de problemas :)

Bien sigan probando que es la mejor manera de aprender, con las variables vamos a vivir dia a dia y vamos a usarlas en todo, no solo operaciones matematicas sino para almacenar ya nuestros datos de trabajo.

Hasta acá es todo por hoy, en la próxima entrega veremos algo de ciclos y como usar el if, while.. etc..


Gracias por seguir esta introducción y no olviden de compartirlo si les gusto.


By marcelo.martinovic@gmail.com 
Licencia Creative Commons