Segunda parte del tutorial:
Sentencias Condicionales
El if puede implementarse de tres formas:
"If" Simple:
dijo:
if [condicion ]:
acciones...
break
"If...else...":
dijo:
if [condicion ]:
acciones...
break
else:
acciones...
break
"If...elif...elif...else":
dijo:
if [condicion ]:
acciones...
break
elif [condicion ]:
acciones...
break
else:
acciones...
break
Esta ultima es el equivalente del "switch...case" de Java o C. La instrucción "break" puede utilizarse para salir de la estructura de control en la que se encuentra anidada, como for o while.
Ejemplo:
En este ejemplo tambien podemos ver la sentencia "input" que es una función que nos permite capturar datos desde la terminal y regresa el dato capturado por lo que debemos guardándolo en una variable, también se le puede asignar un texto para mostrarlo antes de capturar datos.
La sentencia "for" puede implementarse en listas y cadenas.
for variable in [lista o cadena]:
acciones...
Ejemplo:
En este ejemplo vemos las dos formas en que se puede implementar el for, con listas y con cadenas. El tercero es un ejemplo utilizando la función "range(m,n)" que nos permite generar una lista de números de m a n, que nos daría el equivalente de "for(i=0;i<10;1++)" de otros lenguajes. Otro punto importante es ver que la instrucción "print" genera espacios en lugar de salto de linea si añadimos una coma al final.
También vemos que todo lo que esta dentro de una estructura se diferencia por los espacios al principio de la linea. Para indicar el fin de dicha estructura basta con quitar esos espacios en la siguiente instrucción. En otros lenguajes como Java se diferencia con corchetes.
El while se implementa de manera similar a otros lenguajes de programación:
Inicializamos una variable con un cero (0) y el while ejecutara lo que este dentro de su estructura hasta que no se cumpla la condición. Mucho cuidado ya que si ponemos una condición que nunca dejara de cumplirse caemos en un bucle infinito y ya se imaginaran que pasa

Orientación a Objetos
Hasta ahora solo he puesto ejemplos sencillos bajo el paradigma imperativo. Ahora veremos como se crean clases y objetos.
En Python las clases se definen por la palabra "class" seguida del nombre y dos puntos, la definición de métodos se define por la palabra "def" seguida del nombre y entre paréntesis se agregan los atributos, siendo obligatorio escribir al menos el atributo "self", indicando que pertenece a la clase y hereda de la misma.
dijo:
class [nombre_clase]:
def [nombre_metodo](self, atributos):
acciones[...]
Al igual que en otros lenguajes, podemos llamar a un constructor que inicialize variables o llame a métodos, sin embargo es opcional . Se indica el constructor mediante el método:
dijo:
def __init__(self):
acciones[...]
Pondré un ejemplo con la sucesión de Fibonacci. Esta sucesión genera un numero n a partir de la suma de los números n-1 y n-2, por lo que al principio debe contar con al menos dos números, generalmente (1, 1).
Para esto haré una clase llamada "fibonacci" la cual tendrá un método llamado "generar" con el se generaran las sucesiones limitandolo con un atributo "d" que sera el numero de sucesiones que un usuario pida y guardara los números generados en una lista.
En el método principal pedirá y validara que el numero de sucesiones que el usuario requiere sea mayor de 2. Una vez entrado un numero valido, se crea un objeto "nuevo" tipo "fibonacci" y llamara desde ese objeto al método "generar" y de atributo tendrá el numero de sucesiones que se le ha pedido al usuario.
Vemos la declaración de la clase y la declaración y definición del método "generar" con atributos "self" y "d", indicando la jerarquia por los espacios al inicio de la linea. Este metodo crea una lista la cual se inicializa solo con dos elementos (1, 1), también inicializa una variable de control "n" igual a uno (1) que indica la posición en la lista, recordemos que las listas empiezan por cero (0). La instrucción "while True:" le indica a Python que mientras no se le indique salir del bucle seguirá repitiendo lo que este dentro de la jerarquía. Guarda en una variable "temp" la suma de los dos números inmediatos en la lista. Las listas tienen una función para añadir nuevos elementos llamada "append", añadimos la nueva sucesión mediante esta función de nuestra lista e incrementa en uno la variable de control "n". Luego compara si la variable de control "n" es igual a nuestra variable limite "d" pero menos uno para igualarlo al numero de elementos en nuestra lista contando el cero. Si lo anterior es cierto, imprime la sucesión completa y sale del bucle mediante la instrucción "break", de lo contrario hara todo una vez mas.
El método "main()" se define igual que cualquier otra función, pero sin el "self" y sin los espacios antes para indicar que no pertenece a alguna clase. Inicializa una variable "d" igual a cero y muestra un texto "Sucesión de Fibonacci". Entra a un while cuya condición nos dice que si d es menor a 2 seguirá repitiendo todo dentro de la jerarquía. Guarda en "d", haciendo conversión a entero mediante la función "int()", lo que nos regrese la función "input" para que el "if" compare si "d" es mayor de 2. Si se cumple la condición entonces saldrá del while con el "break", de lo contrario mostrara un mensaje de error y ejecutara todo de nuevo.
Resalta el hecho de que también podemos usar modificadores de texto en la instrucción "print" como "n" que es el salto de texto.
Finalmente, cuando ha entrado un numero valido, crea un objeto "nuevo" tipo "fibonacci". Los paréntesis al final le indican que cree una nueva instancia para el objeto. Luego llama al método "generar" del objeto "nuevo" y le da como atributo la variable "d".
Las ultimas lineas le indica n Python que si existe un método cuyo nombre contenga la palabra "main" ejecute el método "main()"
Otro detalle de Python es que en Python 3 no necesitamos poner esta linea al inicio:
dijo:# -*- coding: utf-8 -*-
Ya que reconoce si tenemos caracteres Unicode. Pero Python 2 no, con esa linea le indicamos que hay caracteres especiales (como las vocales con acento).
Me parece que en este ejemplo aplicamos todo lo visto en estos dos tutoriales.
Hasta aquí este segundo tutorial. No se si haré un tercer tutorial para explicar otras cosas de Python, ya que quiero entrar a lo que es PyQt 4.
Se aceptan quejas o sugerencias
