Phyton
Phyton
Casos de xito
Instalacin
Existen varias implementaciones distintas de Python: CPython, Jython, IronPython, PyPy, etc. CPython es la ms utilizada, la ms rpida y la ms madura. Instalar Python es muy sencillo. Es disponible en la mayora de distribuciones Gnu/Linux. Si no lo teneis, podeis descargar la versin correspondiente al vuestro sistema operativo desde la web de Python, en: http://www.python.org/download/. http://www.python.org/download/
Existen dos formas de ejecutar cdigo Python. Podemos escribir lneas de cdigo en el intrprete y obtener una respuesta del intrprete para cada lnea (sesin interactiva) o bien podemos escribir el cdigo de un programa en un archivo de texto y ejecutarlo.
Primer Programa
Abrir
Python
Donde
Primer programa
Escribimos: print "hola mundo" raw_input()
Guardais en un fichero como hola.py y despus veis lo que hace. raw_input() permite ver el texto, porque espera la entrada de datos por parte del usuario antes de quitar el programa.
Tipos de Datos
Nmeros:
entero, flotante, complejo. Ejemplo: (3 | 4,57 | 4 + 3j) Cadenas de texto. Ejemplo: Hola Valores Booleanos. Ejemplo: True - False
Para
EJEMPLO
Escribs
a = 35 c = Hola
Como
veis en Python, a diferencia de muchos otros lenguajes, no se declara el tipo de la variable al crearla. Al utilizarlas se declaran automticamente.
EJEMPLO: >>> a,b= 4,9 >>> a
Sintaxis
Se distinguen Maysculas minsculas No se necesita ninn carcter para indicar el fin de una sentencia. Los bloques son especificados por indentacin # Esta lnea es un comentario Var = 3 #Asignacin con el carcter = Var == Var1 #Operador igualdad Var -= #Para incrementar Var +=1
Listas
Puede
contener cualquier tipo de dato: EJEMPLO: poneis: lista = [35, Hola, True, [1,2,3]] Si quereis acceder a un elemento podeis poner: lista[indice] EJEMPLO: lista[4][1] #accede al elemento 1 Admite tambin numeros negativos: EJEMPLO: lista[-2] #devolveria True Lista [inicio:fin] EJEMPLO: lista[1:] #desde 1 hasta fin lista[:2] #desde inicio a 2
EJEMPLO:
Estructuras de Control
if
if-else
a=input("dime un numero") if a>10: print "el numero elegido es mayor de 10" else: print "el numero elegido es minor o igual a 10" numero=input("dime un numero") if numero < 0: print Negativo elif numero > 0: print Positivo else: print Cero
EJEMPLO 1:
EJEMPLO 2:
Bucles - while
SINTAXIS while condicion: cuerpo del bucle, que se repetir mientras la condicin sea cierta.
EJEMPLO: while True: entrada = raw_input("> ") if entrada == "adios": break #(La palabra clave break (romper) sale del bucle en el que estamos) else: print entrada
Bucles - for
SINTAXIS for variable in lista (o cadena) : cuerpo del bucle EJEMPLO 1 secuencia = ["uno", "dos", "tres"] for elemento in secuencia: print elemento EJEMPLO 2 for i in range(20): print "Hola",
La funcin range()
La
funcin range() crea una lista de nmeros enteros en sucesin aritmtica funcin range con un nico argumento se escribe range(n) y crea una lista creciente de n trminos enteros que empieza en 0 y acaba antes de llegar a n.
La
>>>range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
La funcin len()
La
funcin len() devuelve la longitud de una lista o de una cadena de carcteres. El argumento de la funcin len() es la lista o cadena que queremos "medir". El valor devuelto por la funcin len() se puede usar como parmetro de la funcin range().
>>>len('mensaje secreto') 15 >>>len(['a','b','c']) 3 >>>range(len('mensaje secreto')) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
Funciones
En Python las funciones se declaran de la siguiente forma: def mi_funcion(param1, param2): """Esta funcion imprime los dos valores pasados como parametros""" print param1 print param2
La
cadena de texto en la primera lnea del cuerpo de la funcin se conoce con el nombre de docstring (cadena de documentacin) y sirve, como su nombre indica, a modo de documentacin de la funcin.
Para
mi_funcion("hola", 2)
Es
decir, el nombre de la funcin seguido de los valores que queramos pasar como parmetros entre parntesis. Se puede poner tambin: mi_funcion(param2 = 2, param1 = "hola")
El nmero de valores que se pasan como parmetro al llamar a la funcin tiene que coincidir con el nmero de parmetros que la funcin acepta segn la declaracin de la funcin.
EJEMPLOS
FUNCION
FACTORIAL def factorial(x): if x == 0: return 1 else: return x * factorial(x 1) function_retorna_suma(*elementos) : """Retorna la suma de los elementos pasados por parametro""" valor = 0 for i in elementos : valor = valor + i return valor
def
Python y el Web
Python
es un lenguaje muy til tambin porque, a travs de algunos miniframework, nos va a permitir hacer pequeas aplicaciones web de forma simple y rpida. Los frameworks nos permiten agilizar el desarrollo. Llamamos mini frameworks los que dan funcionalidad recortada a cambio de simplicidad y claridad. Voy a hablar de un miniframework web creado en Python que se llama JUNO
Juno - Instalacin
La
es una de las formas que tiene python para instalar libreras de terceros instalar easy_install basta con ir a su web (http://pypi.python.org/pypi/setuptools). linux apt-get install python-setuptools.
Para En
Pagina Web
Pongamos
realizar una pagina ms bonita, podemos poner tambin html, css, javascript. se Hace?
Como
Creamos
una carpeta que llamamos templates y escribimos el codigo que nos gusta:
from juno import * @route('/:nombre/') def hola(web, nombre): template('index.html', nombre=nombre) run()
Ahora
faltan solo las bases de datos donde almanecar los datos de la aplicacin. que queremos almacenar todas las personas que saludan:
Supongamos
'amigos.db'}) #usamos sqlite, el fichero ser amigos.db #tambin podramos usar mysql o postgres
= model('Amigos', nombre='string')
Amigos
#esto definir una tabla llamadas Amigos con una columna llamada nombre. hay que ir a la base de datos a crear las tablas...Python las crea por ti!
No
Codigo aplicacin
@route('/:nombre/') def hola(web, nombre): #salvamos el nuevo amigo Amigos(nombre=nombre).save() # similar a un insert ... amigos = find(Amigos).all() # similar a un select * from Amigos template('index.html', nombre=nombre, amigos=amigos)
Codigo template
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01// EN"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>juno</title> </head> <body> <h1> Hola, {{nombre}} </h1> <h2>Otras personas que han visitado la web:</h2> <ul> {% for amigo in amigos %} <li>{{amigo.nombre}}</li> {% endfor %} </ul> </body> </html>
Final - Ms informacines
http://wiki.python.org/moin/WebProgramming
aplicaciones-web-con-python-y-junoparte-ii/ Y aqui una aplicacin ms complicada donde se pueda ver en un caso real como funciona Juno.