sábado, 3 de mayo de 2014

Mi pequeño tutorial de Python \(n_n)/

hatsune miku python console
Código Python visto por Miku desde el editor Vim, en Linux Ubuntu.

Este tutorial introductorio lo hice originalmente en mi RFC Index para aquellos que vienen de tener una introducción a la programación con Batch (un lenguaje demasiado restringido en posibilidades), y lo redacté en base a la “Guia de aprendizaje de Python release 2.0” que como anécdota es de octubre del 2000, lo que prueba la anecdota de que los lenguajes libres ajenos a Microsoft no se desactualizan (modificándose parcialmente), sino que se le agregan nuevas funciones sobre la base original, como en el lenguaje C/C++.

Python es un lenguaje mas fácil que C, pero a su vez es tan poderoso como C, Python además puede ser utilizado como una potente calculadora. Yo ahora me voy a basar en un entorno UNIX like como el caso de GNU/Linux Ubuntu para variar un poco del entorno de Windows (comúnmente usado por la mayoría).

Primero debemos tener instalado Python, siendo que en Linux ya viene instalado en especial en todas las distribuciones derivadas de Devian. En Windows la instalación es bastante fácil, en la página de http://www.python.org/download/ se puede bajar la última versión del interprete de Python para cada plataforma.

Entre sus características podríamos referenciar 3 puntos importantes:
• Permite resolver operaciones complejas en C en pocas sentencias.
• El agrupamiento de sentencias se realiza con sangrías.
• No es necesario declarar los argumentos o las variables.

Ahora vamos a hacer lo primero que se hace con cualquier lenguaje que se aprende: un  “Hola Mundo” :P

Primero abrimos nuestro editor de código favorito (recomiendo PyScripterKate o Notepad++) La sintaxis es fácil:

>>> print “Hola mundo!”
Hola mundo!

Luego lo guardamos con el nombre y la extensión “hola_mundo.py” (recomiendo reemplazar los espacios por el guión bajo en los nombres de archivos python para hacerlos mas accesibles desde la consola) y luego desde la consola Bash o el CMD tecleamos:

python hola_mundo.py

Al dar intro aparecerá el típico mensaje “Hola mundo!”, al haber tipeado python al principio estoy llamando al interprete a que ejecute el archivo personalmente, para poder hacer que el archivo se ejecute con un doble clic hay que agregar la siguiente línea al principio del código:

#!/usr/bin/python
python hola_mundo.py

Ademas en UNIX*/Linux hay que decirle al archivo que es ejecutable mediante la orden:

chmod a+x hola_mundo.py

Ahora para definir una variable, se pone cualquier nombre sin espacios ni caracteres especiales y su valor encerrado entre comillas seguido del igual, luego se convoca a la variable por el nombre definido:

mensaje = “Hola mundo”
print mensaje

Las variables de python son mucho más elegantes que en batch, aunque parecidas en que se pueden usar para hacer cálculos, pero mucho mas potentes:

resultado = 345592652368 + 2759254890 – 4829726345 / 642 * 3
print resultado

También hay muchas funciones especificas como len(“”) cuya función es medir la cantidad de caracteres de una cadena de texto, en este caso la variable mensaje:
len(“mensaje”)
10

Los comentarios en Python se definen con # (numeral), y en este caso agrupamos la variable en el mensaje, saludando a una persona:

# Saludando a pepe
nombre = “Pepe”
print “Hola”, nombre          # El texto esta entre comillas y la variable afuera

Para que una variable pueda ser definida por el usuario se utiliza el comando raw_input(“Ingrese un valor: ”) que vendría a ser como el Set /P Ingrese un valor: en batch, puede ponerse input(“”) solo el texto seria tratado como un valor de variable en memoria y no como una cadena de texto (string) como lo define el prefijo “raw_”, acá se combinaría raw_input(“”) adentro de una variable:

#!/usr/bin/python
# Saludando a una persona
nombre = raw_input(“Como te llamas? ”)
print “Hola”, nombre
print “y tu nombre tiene”, len(nombre), “letras.”

Esto devolvería:

Como te llamas? nikos
Hola nikos
y tu nombre tiene 5 letras.

Al programa podríamos agregarle un condicional con la sentencia IF (igual que en batch), para en caso de que el usuario no ingrese un nombre, hay que notar que tanto if como else llevan el signo “dos puntos” al final para señalar las acciones (en batch se usaban opcionalmente paréntesis):

#!/usr/bin/python
# Saludando a una persona
nombre = raw_input(“Como te llamas? ”)

if nombre == “”:
            print “No me das tu nombre?... No te saludo.”
else:
print “Hola”, nombre
print “y tu nombre tiene”, len(nombre), “letras.”

En programación, y más dentro de Python hay muchas maneras de resolver un mismo problema, por ejemplo las cadenas de texto anteriores yo las separe de las variables usando comas, pero se pueden juntar con el símbolo mas (+):

print “Hola” + nombre + “y tu nombre tiene” + str(len(nombre)) + “letras.”

Nos podemos fijar que a len la tuve que poner dentro de str(), la cual dice que el valor de len no es para sumarse (por los signos), sino que es una cadena de texto (string); por ejemplo las partes textuales del script de arriba al estar encerradas entre comillas se definen como cadenas o strings, si no tuvieran las comillas se definirían como valores y no se procesarían.
Para explicar mejor esto voy a dar un ejemplo, así que abrimos una consola de Python y en el prompt tipeamos lo siguiente:

>>> 11 + 11
22
>>> “11” + “11”
1111

La diferencia se nota en que estando sin comillas las reconoce como variables y las procesa como valores, por lo que si en ves de números fueran texto daría un error diciendo que las variables no están definidas, en cambio en el ultimo ejemplo al tener las comillas conserva los caracteres juntándolos sin procesarlos si no hay orden explicita.

Una función avanzada de Python es la de poder crear funciones, esto se hace con el comando DEF que vendría a ser una variable capaz de almacenar grupos de comandos enteros, por ejemplo se puede poner un string determinado:

def no_saludar()
print “No me das tu nombre?... No te saludo.”
if nombre == “”:
            no_saludar()

En este caso anterior definimos la función no_saludar() y la colocamos en el if , la función def es muy útil cuando hay que repetir muchas veces un segmento de código extenso en un programa.
Seguramente se preguntarán para que se dejan los paréntesis si no tienen nada, y en realidad esto es por convención, los paréntesis son para pasar argumentos determinados a las funciones, aunque esto es algo más complicado (y este tutorial es solo introductorio).

Un ejemplo de uso de FOR es con una lista contenida en una variable, por ejemplo:

personas = [“Nikos”, “Matias”, “María”]
for nombre in personas:
            print “Hola”, nombre

Esto mostraría:

Hola Nikos, Hola Matias, Hola María

A partir de ahora el tutorial podría extenderse con más funciones, pero creo que para ser una pequeña introducción con esto será suficiente, aunque no me gustaría terminar sin antes mencionarles a todos los programadores de Batch que estén buscando migrar a este mejor lenguaje, la existencia del modulo OS.

Este modulo nos permite ejecutar comandos de sistema y programas externos, y se llama mediante el comando import de la siguiente forma:

import os

Vamos a dar un ejemplo concreto con un script:

#!/usr/bin/python
import os
                      os.system("ping http://www.google.com")
time.sleep(10)
                      os.system("ping http://www.yahoo.com")

Lo que haría el código anterior sería mostrar el resultado de dos ping (a Google y Yahoo) con un tiempo intermedio de espera de 10 segundos. Obviamente este código no tiene una utilidad muy práctica, pero muestra básicamente como funciona el módulo OS: primero importamos el módulo y luego llamamos los comandos o programas que precisemos mediante la sentencia os.system("comando o programa")

Un ejemplo más concreto pero avanzado para aquellos que vienen de programar en Batch sería la realización de un simil "bot" para generar visitas a lo que por ejemplo podría ser un sitio o un vídeo determinado. Este código que yo realicé y comenté estaría orientado a abrir un vídeo en Windows usando el navegador Mozilla Firefox (siendo este el navegador predeterminado) y reproducirlo durante 5 segundos o menos para luego cerrarlo y volverlo a abrir durante 200 veces, lo que generaría 200 reproducciones:

#!/usr/bin/python
import os            # Llamamos al modulo os
numero = 0         # Declaramos la variable numero con valor 0
label .volver       # Fijamos una etiqueta para la sentencia goto (como las de Batch)

# A continuación usamos el comando start de windows para abrir un vídeo:
os.system("start http://www.youtube.com/watch?v=Bh5W_R5BwqI")

# En caso de que Firefox no fuera el navegador por default, podemos usar lo siguiente:
# os.system("%ProgramFiles%\Firefox\firefox.exe http://www.youtube.com/watch?v=Bh5W_R5BwqI")

# Fijamos un tiempo de espera de 5 segundos (como en el timeout de windows)
time.sleep(5)

# Cerramos la instancia de firefox que tenga YouTube en el nombre de ventana (ver taskkill /?)
os.system("TASKKILL /F /IM:firefox.exe /FI "WINDOWTITLE ne YouTube" > nul")

# A continuación se le suma 1 a la variable numero
numero = numero + 1

# Se comprueba que la variable numero no halla llegado a 200 (el límite) y en caso de hacerlo se
# pide que se renueve la dirección IP y eliminar las cookies para no ser banneados por youtubi :P
if numero == 200:
print "límite de 200 reproducciones" && print "Renueve su IP y borre las cookies!" && break
else:

goto .volver
# En caso de que el condicional (if) no sea cierto (else), la sentencia goto vuelve a repetir el código.



Un apunte importante (porque me habían preguntado al respecto) es que en python es usado el “punto y coma” (;) para agrupar barios comandos en una sola línea de código, como el "&&" usado en Batch o Bash.

Podría haber puesto más ejemplos, pero como dije antes no quisiera extender más allá a este tutorial introductorio.

Para que sigan aprendiendo más de este lenguaje les dejo los siguientes tutoriales de los cuales yo estudié y sigo estudiando:

http://to2hacemos.blogspot.com.ar/2012/07/pack-de-15-cursos-y-tutoriales-de.html
http://to2hacemos.blogspot.com.ar/2012/07/tutorial-de-introduccion-la.html

Salu2 a to2
logo python

No hay comentarios.: