SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
2º Desarrollo Aplicaciones Entorno Servidor
                                   I.E.S. Gran Capitán

                                       Yamuza Álvarez,
                                                Sergio
                                        Cañas Poblete,
                                               Antonio




1. Características                                 2

2. Requisitos                                      4

3. Ventajas                                        8

4. Inconvenientes                                10

5. Ejemplo de un programa sencillo               11

6. Referencias                                   14

1. Características
                                                       1
Simple. Este lenguaje está caracterizado por ser de una complejidad
media/baja, simple y minimalista. El pseudo-código de Python
permite centrarse en la solución del problema, que es realmente lo
importante, y no en la sintaxis.


Sencillo de aprender. Debido a esta característica, Python se
considera uno de los lenguajes más sencillos de aprender.


Código libre. Es un ejemplo de FLOSS (Free/Libre and Open Source
Software). Es decir, se pueden distribuir copias de este software
libremente. Esta es una de las razones por las que Python es tan
bueno, ha sido creado y mejorado por una comunidad que solo
quiere ver un mejor Python.


Lenguaje de alto nivel. No hay que tener en cuenta detalles tales
como manejar la memoria empleada por el programa que se está
diseñando.


Portable. Funciona en diversas plataformas, al ser Open Source, sin
necesidad de ningún cambio. Aunque sí se deben tener en cuenta
las características del sistema: librerías, módulos exclusivos de un
sistema…



Interpretado. No existen compilaciones separadas y pasos de
ejecución, internamente se ejecuta el código fuente. No está
presente la preocupación de enlazar y cargar librerías, por tanto,
sólo se debe copiar el código del programa en cualquier otro
sistema y trabajará de igual forma.



                                                                  2
Orientado a objetos.       Permite programación orientada a
     procedimientos (piezas de programa reutilizables) y objetos
     (combinación de datos y funcionalidad). Respecto a otros lenguajes
     como C++ y Java, Python ofrece una manera potente y simple de
     emplear programación orientada a objetos.


     Ampliable. En caso de requerir una pieza de código de rápida
     ejecución, se puede escribir en C, y después combinarla con el
     programa Python.


     Incrustable. Se puede insertar dentro de un programa C ó C++ para
     aprovechar las facilidades de “scripting” dentro del mismo.


     Librerías extendidas. La librería estándar es muy amplia, puede
     ayudar a desarrollar programas que involucran expresiones
     regulares, generación de documentos, bases de datos, navegadores
     web, correo electrónico, XML, archivos WAV… Además de esta
     librería estándar, hay otras de calidad superior como el Python
     Imaging Library, la cual permite la manipulación de imágenes.




2. Requisitos


Si nos encontrásemos delante de un servidor de tipo Unix es probable
que Python ya se encuentre instalado. Basta comprobarlo con una orden
simple en la consola de comandos:


     $ python


                                                                      3
Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>>

Ese es el intérprete de Python. Para salir escribimos exit().

>>> print “Hola DWES”;
Hola DWES
>>> exit()


Por el contrario, si nos devolviese un error del tipo

$ python
bash: python3: command not found


debemos proceder a su instalación:

      En sistemas Debian y derivados:
      $ sudo apt-get install python
      En ArchLinux:
      $ sudo pacman -S python
      En RedHat y demás sistemas basados en paquetería rpm:
      $ sudo yum install python

Para BSD podemos usar los ports de FreeBSD y en Solaris la herramienta
pkgadd.

En MacOSX y Microsoft Windows nos dirigimos a http://python.org/
download y descargamos el correspondiente .dmg o el instalador .exe
para la arquitectura de nuestro procesador.




                                                                     4
Entre las herramientas más comunes podemos encontrar:

     El intérprete. CPython es el más usado generalmente, aunque
     hay otros muy interesantes como IronPython, Jython (en máquina
     virtual Java) o Pypy (Python dentro de Python).

     Easy Install. Script que se encarga de indexar, instalar,
     compilar, desinstalar y actualizar de forma sencilla y segura
     todos los paquetes y librerías que queramos integrar. Tiene un
     funcionamiento muy completo, permite elegir la versión exacta a
     instalar, por si existen problemas de dependencias. Forma parte del
     paquete “setuptools“.

     Virtualenv. Por las características del mismo intérprete, pudiera
     ser que necesitemos distintas versiones de Python instaladas,
     con distintas librerías y diferentes configuraciones. Virtualenv
     es capaz de crear entornos virtuales para ejecutar programas,
     completamente aislados e independientes. Instalación:

          $ easy_install virtualenv==dev.




                                                                      5
Servidor para desarrollo web. En la fase de desarrollo no es
necesario, pero sí para la producción. Y en este caso debemos
montarnos el servidor, o servidores, necesarios. Lo normal es
utilizar apache2 más el módulo WSGI para servir el contenido
dinámico, y un segundo servidor para servir todo lo estático.

Generador de documentación. Si seguimos unos estándares en
las definiciones de clases, funciones, etc. podremos aprovechar
la potencia de herramientas como Sphynx, un generador de
documentación muy potente, que nos ofrece la posibilidad de
generar la API de nuestros desarrollos consultable en una aplicación
HTML, PDF, LateX.

Compilador a exe para Windows. Esta herramienta se llama
Py2exe y consigue que podamos distribuir en plataformas Windows
nuestro software, ya que se encarga de proporcionar el intérprete y
todas las dependencias que fuesen necesarias.

Entornos y editores:


                                                                  6
gEdit: dispone de todas las características necesarias en un
          editor actual.

          Vi+pyflakes: una herramienta potentísima una vez se
          aprende.

          Eric IDE: entorno moderno, con autocompletado, estilo
          Eclipse.




3.
Ventajas.


Legibilidad
La sintaxis de Python lo convierte en un lenguaje claro y legible tanto
para expertos como para los más novatos en la programación, lo cual
le está dando cierta fama entre los docentes que eligen a éste como

                                                                      7
un lenguaje introductorio. Su forma de organizarse impone ciertas
normas a los programadores que de manera implícita los vuelve más
productivos. Tiene menos dialectos (variaciones que no cambian la
naturaleza intrínseca del lenguaje) que, por ejemplo, Perl. El hecho de
definir los bloques mediante indentación previene los fallos causados por
un incorrecto sangrado del código.


Soporte
Existen foros de ayuda a lo largo y ancho de Internet o el canal de
IRC #Python que se encuentra en la primera posición de lenguajes
de programación. La creciente comunidad de Python se fundamenta
en el hecho de ser un lenguaje de código abierto, lo que promueve la
corrección de errores, actualización, creación de parches e innovación, ya
que cualquiera puede aportar sus conocimientos.



Fácil/rápido de aprender
Asemeja al pseudocódigo, evitando las largas y extrañas líneas de
código que podemos ver en otros lenguajes de programación. En el
mundo empresarial esto se traduce en un bajo costo al poder enseñar e
implantarlo fácil y rapidamente a su plantilla de programadores. Desde el
principio del aprendizaje pueden crearse códigos útiles casi de inmediato.
Fácil/rápido de programar
Se dice que Python es un lenguaje listo para ser ejecutado. No necesita
seguir un proceso de compilación, comprobación y ejecución ni, como
ocurre con otros lenguajes de scripting, editar el código fuera del entorno
de ejecución. Permite modificar la capa de abstracción de alto nivel de la
aplicación sin cambiar las reglas del negocio.
A modo didáctico y para pruebas, el intérprete interactivo puede ser de
gran ayuda, elevando su potencial si lo usamos para depurar trozos de
código antes de insertarlos en la aplicación. Además, éste intérprete es
facilmente extensible, incluso podemos incrustar código en C.


Reusabilidad
Hace hincapié en esto implementando módulos y paquetes. Existe
la Librería Estándar de Python, parte de distribución, con un extenso

                                                                         8
número de módulos listos para ser usados. Además, es fácil con Python
dividir el código en módulos para compartir funcionalidades con otras
aplicaciones a modo de complementos de las mismas.


Portabilidad
No ha sido diseñado para un sistema operativo concreto. Su intérprete
se escribió en ANSI C por lo que prácticamente podemos llevarlo a
toda plataforma. No obstante ciertos módulos pueden implementar
funcionalidades específicas de los sistemas.


Programación Orientada a Objetos
En contraposición a la mayoría de lenguajes de scripting, que
implementan el nuevo paradigma como un añadido (add-on), Python se
diseñó orientado a objetos. Sin embargo, en tareas simples, podemos
seguir usando código estructurado.
4. Inconvenientes.


El código en Python es más lento que su homólogo escrito en C/C++,
puesto que no es un lenguaje compilado. No se comprueban los tipos
de variables en tiempo de compilación. Aunque esto facilite la lectura/
escritura de código, al usar unos tipos dinámicos tan flexibles, los grandes
proyectos en Python pueden ser difícilmente depurables. Además, la
librería estándar de Python no es comparable en extensión con la
de C/C++/C# o Java. Sin embargo, asciende rápidamente gracias a su
comunidad.

Pero, ¿qué opinan los programadores?




                                                                          9
5. Ejemplo de un programa sencillo.


# -*- coding: utf-8 -*-
# Autor: Adrigm

import random
import string
import pickle

# Crea una lista con la longitud de la palabra
def ocultar(cadena):
        ocultada = []
        for i in cadena:
                ocultada += "_"
        return ocultada

# Convierte la cadena en una lista.
def listar(cadena):
        listada = []
        for letra in cadena:
                listada += letra
        return listada

# Devuelve -1 si no encuentra un carácter en una lista.
def buscar(lista, caracter):
        for i in lista:
                if i == caracter:
                        return 1
        return -1

# Sustituye la letra dada en la palabra oculta si existe en palabra.
def sustituir(palabra, oculta, letra):
        n = 0
        while n < len(palabra):
                if palabra[n] == letra:
                        oculta[n] = letra
                n += 1




                                                                       10
# Quita el último caracter de una lista de palabras.
def quitarultimo(lista):
        n = 0
        lista2 = range(len(lista))
        while n < len(lista):
                palabra = lista[n]
                lista2[n] = palabra[:-1]
                n += 1
        return lista2

# Convierte una letra en minúsculas.
def convminusculas(letra):
        mayusculas = "ABCDEFGHIJKLMN?OPQRSTUVWXYZ"
        minusculas = "abcdefghijklmn?opqrstuvwxyz"
        n = 0
        while n < len(mayusculas):
                if mayusculas[n] == letra:
                        letra = minusculas[n]
                n += 1
        return letra

# Muñeco en ASCII.
muneco = ["n"*6 + "        -----",
                "          |n"*6 + "        -----",
                "    ______n" + "          |n"*6 + "      -----",
                "    ______n" + "    |     |n" + "        |n"*5 
                + "        -----",
                "    ______n" + "    |     |n" + "    O   |n" 
                + "          |n"*4 + "        -----",
                "    ______n" + "    |     |n" + "    O   |n" 
                + " =[:]=    |n" + "          |n"*3 + "      -----",
                "    ______n" + "    |     |n" + "    O   |n" 
                + " =[:]=    |n" + " /       |n" + "        |n"*2 
                + "        -----"]

# Lista de palabras en archivo.
f = open("palabras.txt", "r")
lista1 = f.readlines()
lista = quitarultimo(lista1)

# Asignación de palabra aleatoria y ocultar
palabra = lista[random.randint(0, len(lista)-1)]
listada = listar(palabra)
oculta = ocultar(palabra)

# Asignación de vidas.
vidas = 7
nivel = 0

# Presentación.
print "-"*20
print "?EL AHORCADO!"
print "-"*20
print "Tienes 7 vidas para adivinar la palabran"

# Bucle del juego.
while vidas > 0:
        print "nTe quedan", vidas, "vidas"
        print muneco[nivel]
        print oculta
        letra = raw_input("Escribe una letra: ")
        letra = convminusculas(letra)
        if string.find(palabra, letra) == -1:
                 vidas -= 1
                 nivel += 1
        else:
                 sustituir(listada, oculta, letra)
        if buscar(oculta, "_") == -1:
                 print oculta




                                                                          11
break

# Fin del juego.
if vidas > 0:
        print "nSí, has ganado, la palabra era", palabra, "n"
        resultado = 1
else:
        print "nLo siento, perdiste, la palabra era", palabra, "n"
        resultado = 0

# Estadísticas.
try:
        archivo = open("ahorcado.dat", "r")
        jugadas = pickle.load(archivo)
        ganadas = pickle.load(archivo)
        perdidas = pickle.load(archivo)
        archivo.close()
except:
        archivo = open("ahorcado.dat", "w")
        jugadas = 0
        ganadas = 0
        perdidas = 0
        archivo.close()

jugadas += 1
if resultado == 1:
        ganadas += 1
else:
        perdidas += 1

archivo = open("ahorcado.dat", "w")
pickle.dump(jugadas, archivo)
pickle.dump(ganadas, archivo)
pickle.dump(perdidas, archivo)
archivo.close()

print "Partidas jugadas:", jugadas
print "Ganadas:", ganadas
print "Perdidas:", perdidas




6. Referencias

                                                                       12
http://www.webdotdev.com/nvd/content/view/1073/
http://programmers.stackexchange.com/questions/15468/what-are-the-drawbacks-of-python
http://python-hispano.org/Inicio
http://www.ironfroggy.com/software/i-am-worried-about-the-future-of-python
http://es.wikipedia.org/wiki/Python
http://www.pythontutorials.net/introduction-to-python.aspx
http://python.majibu.org/
http://es.wikipedia.org/wiki/Dialecto_(programaci%C3%B3n)
http://www.carlospes.com/minidiccionario/reusabilidad.php
http://dev.laptop.org/~edsiper/byteofpython_spanish/ch01s02.html
http://www.genbetadev.com/herramientas/herramientas-
imprescindibles-para-un-desarrollador-de-python




                                                                                  13

Más contenido relacionado

La actualidad más candente

Software libre y comercial
Software libre y comercialSoftware libre y comercial
Software libre y comercial
Ronny Kth
 
Sofware Libre Y Comercial
Sofware Libre Y ComercialSofware Libre Y Comercial
Sofware Libre Y Comercial
gueste4801f
 

La actualidad más candente (20)

Sistema de Archivos
Sistema de ArchivosSistema de Archivos
Sistema de Archivos
 
Linux standard file system
Linux standard file systemLinux standard file system
Linux standard file system
 
Linux security
Linux securityLinux security
Linux security
 
Software libre y comercial
Software libre y comercialSoftware libre y comercial
Software libre y comercial
 
python
pythonpython
python
 
tsp modelo
tsp modelotsp modelo
tsp modelo
 
Programacion MODULAR
Programacion MODULARProgramacion MODULAR
Programacion MODULAR
 
Archivos y directorios
Archivos y directoriosArchivos y directorios
Archivos y directorios
 
Course 102: Lecture 27: FileSystems in Linux (Part 2)
Course 102: Lecture 27: FileSystems in Linux (Part 2)Course 102: Lecture 27: FileSystems in Linux (Part 2)
Course 102: Lecture 27: FileSystems in Linux (Part 2)
 
Software= Presentacion En Power Point(2).(2)
Software= Presentacion En Power Point(2).(2)Software= Presentacion En Power Point(2).(2)
Software= Presentacion En Power Point(2).(2)
 
Sistemas Operativos Mono Proceso
Sistemas Operativos Mono ProcesoSistemas Operativos Mono Proceso
Sistemas Operativos Mono Proceso
 
Modelos de análisis estructurado
Modelos de análisis estructuradoModelos de análisis estructurado
Modelos de análisis estructurado
 
Users and groups in Linux
Users and groups in LinuxUsers and groups in Linux
Users and groups in Linux
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
 
Introduction to Linux Kernel
Introduction to Linux KernelIntroduction to Linux Kernel
Introduction to Linux Kernel
 
Unix - An Introduction
Unix - An IntroductionUnix - An Introduction
Unix - An Introduction
 
Organizacion de un sistema operativo
Organizacion de un sistema operativoOrganizacion de un sistema operativo
Organizacion de un sistema operativo
 
Sistemas operativos y Licencias
Sistemas operativos y LicenciasSistemas operativos y Licencias
Sistemas operativos y Licencias
 
Course 102: Lecture 6: Seeking Help
Course 102: Lecture 6: Seeking HelpCourse 102: Lecture 6: Seeking Help
Course 102: Lecture 6: Seeking Help
 
Sofware Libre Y Comercial
Sofware Libre Y ComercialSofware Libre Y Comercial
Sofware Libre Y Comercial
 

Destacado

Programacion orientada a objetos python manuel casado martín - universidad ...
Programacion orientada a objetos python   manuel casado martín - universidad ...Programacion orientada a objetos python   manuel casado martín - universidad ...
Programacion orientada a objetos python manuel casado martín - universidad ...
Wilson Bautista
 
Manual Basico para Encantadores de Serpientes (Python)
Manual Basico para Encantadores de Serpientes (Python)Manual Basico para Encantadores de Serpientes (Python)
Manual Basico para Encantadores de Serpientes (Python)
Fco Javier Lucena
 
Tutorial de Python - Pyar
Tutorial de Python - PyarTutorial de Python - Pyar
Tutorial de Python - Pyar
Sergio Vallejo
 
Trabajo de python
Trabajo de pythonTrabajo de python
Trabajo de python
Edgar Lemus
 
Programación de Videojuegos con Python y Pilas (VI)
Programación de Videojuegos con Python y Pilas (VI)Programación de Videojuegos con Python y Pilas (VI)
Programación de Videojuegos con Python y Pilas (VI)
Fernando Salamero
 

Destacado (20)

Programacion orientada a objetos python manuel casado martín - universidad ...
Programacion orientada a objetos python   manuel casado martín - universidad ...Programacion orientada a objetos python   manuel casado martín - universidad ...
Programacion orientada a objetos python manuel casado martín - universidad ...
 
Introducción a python
Introducción a pythonIntroducción a python
Introducción a python
 
Info nivel 1 avanzado
Info nivel 1 avanzadoInfo nivel 1 avanzado
Info nivel 1 avanzado
 
Programa taller-gratuito-python
Programa taller-gratuito-pythonPrograma taller-gratuito-python
Programa taller-gratuito-python
 
Manual de python
Manual de pythonManual de python
Manual de python
 
Todo Sobre El Lenguaje Python
Todo Sobre El Lenguaje PythonTodo Sobre El Lenguaje Python
Todo Sobre El Lenguaje Python
 
Manual Basico para Encantadores de Serpientes (Python)
Manual Basico para Encantadores de Serpientes (Python)Manual Basico para Encantadores de Serpientes (Python)
Manual Basico para Encantadores de Serpientes (Python)
 
Tutorial de Python - Pyar
Tutorial de Python - PyarTutorial de Python - Pyar
Tutorial de Python - Pyar
 
Trabajo de python
Trabajo de pythonTrabajo de python
Trabajo de python
 
Python (práctica 3)
Python (práctica 3)Python (práctica 3)
Python (práctica 3)
 
Excel ingenieria
Excel ingenieriaExcel ingenieria
Excel ingenieria
 
Python (práctica 2)
Python (práctica 2)Python (práctica 2)
Python (práctica 2)
 
Iniciación a python
Iniciación a pythonIniciación a python
Iniciación a python
 
Python (práctica 1)
Python (práctica 1)Python (práctica 1)
Python (práctica 1)
 
Programación de Videojuegos con Python y Pilas (VI)
Programación de Videojuegos con Python y Pilas (VI)Programación de Videojuegos con Python y Pilas (VI)
Programación de Videojuegos con Python y Pilas (VI)
 
Cuaderno funcion excel
Cuaderno funcion excelCuaderno funcion excel
Cuaderno funcion excel
 
107956 excel avanzado
107956 excel avanzado107956 excel avanzado
107956 excel avanzado
 
Programación de Videojuegos con Python y Pilas (II)
Programación de Videojuegos con Python y Pilas (II)Programación de Videojuegos con Python y Pilas (II)
Programación de Videojuegos con Python y Pilas (II)
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machos
 
Practicas de excel sena
Practicas  de excel senaPracticas  de excel sena
Practicas de excel sena
 

Similar a Python

Python basic slides for beginners to learn python
Python basic slides for beginners to learn pythonPython basic slides for beginners to learn python
Python basic slides for beginners to learn python
notelodigo5
 

Similar a Python (20)

10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacion
 
Introduccion a-python
Introduccion a-pythonIntroduccion a-python
Introduccion a-python
 
Características de 10 lenguajes de programación
Características de 10 lenguajes de programaciónCaracterísticas de 10 lenguajes de programación
Características de 10 lenguajes de programación
 
Parallel python sistemas operativos avanzados
Parallel python sistemas operativos avanzadosParallel python sistemas operativos avanzados
Parallel python sistemas operativos avanzados
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Manual python2
Manual python2Manual python2
Manual python2
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python
Tutorial pythonTutorial python
Tutorial python
 
Raspberry Pi: El tutorial de Python
Raspberry Pi: El tutorial de PythonRaspberry Pi: El tutorial de Python
Raspberry Pi: El tutorial de Python
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Python basic slides for beginners to learn python
Python basic slides for beginners to learn pythonPython basic slides for beginners to learn python
Python basic slides for beginners to learn python
 
Herramientas de programación para desarrolladores
Herramientas de programación para desarrolladoresHerramientas de programación para desarrolladores
Herramientas de programación para desarrolladores
 
El tutorial PYTHON EMERSON EDUARDO RODRIGUES
El tutorial PYTHON  EMERSON EDUARDO RODRIGUESEl tutorial PYTHON  EMERSON EDUARDO RODRIGUES
El tutorial PYTHON EMERSON EDUARDO RODRIGUES
 
Desarrollo extensiones en OpenOffice.org
Desarrollo extensiones en OpenOffice.orgDesarrollo extensiones en OpenOffice.org
Desarrollo extensiones en OpenOffice.org
 
python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdf
 
Python para todos
Python para todosPython para todos
Python para todos
 
Python para Todos
Python para TodosPython para Todos
Python para Todos
 

Python

  • 1. 2º Desarrollo Aplicaciones Entorno Servidor I.E.S. Gran Capitán Yamuza Álvarez, Sergio Cañas Poblete, Antonio 1. Características 2 2. Requisitos 4 3. Ventajas 8 4. Inconvenientes 10 5. Ejemplo de un programa sencillo 11 6. Referencias 14 1. Características 1
  • 2. Simple. Este lenguaje está caracterizado por ser de una complejidad media/baja, simple y minimalista. El pseudo-código de Python permite centrarse en la solución del problema, que es realmente lo importante, y no en la sintaxis. Sencillo de aprender. Debido a esta característica, Python se considera uno de los lenguajes más sencillos de aprender. Código libre. Es un ejemplo de FLOSS (Free/Libre and Open Source Software). Es decir, se pueden distribuir copias de este software libremente. Esta es una de las razones por las que Python es tan bueno, ha sido creado y mejorado por una comunidad que solo quiere ver un mejor Python. Lenguaje de alto nivel. No hay que tener en cuenta detalles tales como manejar la memoria empleada por el programa que se está diseñando. Portable. Funciona en diversas plataformas, al ser Open Source, sin necesidad de ningún cambio. Aunque sí se deben tener en cuenta las características del sistema: librerías, módulos exclusivos de un sistema… Interpretado. No existen compilaciones separadas y pasos de ejecución, internamente se ejecuta el código fuente. No está presente la preocupación de enlazar y cargar librerías, por tanto, sólo se debe copiar el código del programa en cualquier otro sistema y trabajará de igual forma. 2
  • 3. Orientado a objetos. Permite programación orientada a procedimientos (piezas de programa reutilizables) y objetos (combinación de datos y funcionalidad). Respecto a otros lenguajes como C++ y Java, Python ofrece una manera potente y simple de emplear programación orientada a objetos. Ampliable. En caso de requerir una pieza de código de rápida ejecución, se puede escribir en C, y después combinarla con el programa Python. Incrustable. Se puede insertar dentro de un programa C ó C++ para aprovechar las facilidades de “scripting” dentro del mismo. Librerías extendidas. La librería estándar es muy amplia, puede ayudar a desarrollar programas que involucran expresiones regulares, generación de documentos, bases de datos, navegadores web, correo electrónico, XML, archivos WAV… Además de esta librería estándar, hay otras de calidad superior como el Python Imaging Library, la cual permite la manipulación de imágenes. 2. Requisitos Si nos encontrásemos delante de un servidor de tipo Unix es probable que Python ya se encuentre instalado. Basta comprobarlo con una orden simple en la consola de comandos: $ python 3
  • 4. Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Ese es el intérprete de Python. Para salir escribimos exit(). >>> print “Hola DWES”; Hola DWES >>> exit() Por el contrario, si nos devolviese un error del tipo $ python bash: python3: command not found debemos proceder a su instalación: En sistemas Debian y derivados: $ sudo apt-get install python En ArchLinux: $ sudo pacman -S python En RedHat y demás sistemas basados en paquetería rpm: $ sudo yum install python Para BSD podemos usar los ports de FreeBSD y en Solaris la herramienta pkgadd. En MacOSX y Microsoft Windows nos dirigimos a http://python.org/ download y descargamos el correspondiente .dmg o el instalador .exe para la arquitectura de nuestro procesador. 4
  • 5. Entre las herramientas más comunes podemos encontrar: El intérprete. CPython es el más usado generalmente, aunque hay otros muy interesantes como IronPython, Jython (en máquina virtual Java) o Pypy (Python dentro de Python). Easy Install. Script que se encarga de indexar, instalar, compilar, desinstalar y actualizar de forma sencilla y segura todos los paquetes y librerías que queramos integrar. Tiene un funcionamiento muy completo, permite elegir la versión exacta a instalar, por si existen problemas de dependencias. Forma parte del paquete “setuptools“. Virtualenv. Por las características del mismo intérprete, pudiera ser que necesitemos distintas versiones de Python instaladas, con distintas librerías y diferentes configuraciones. Virtualenv es capaz de crear entornos virtuales para ejecutar programas, completamente aislados e independientes. Instalación: $ easy_install virtualenv==dev. 5
  • 6. Servidor para desarrollo web. En la fase de desarrollo no es necesario, pero sí para la producción. Y en este caso debemos montarnos el servidor, o servidores, necesarios. Lo normal es utilizar apache2 más el módulo WSGI para servir el contenido dinámico, y un segundo servidor para servir todo lo estático. Generador de documentación. Si seguimos unos estándares en las definiciones de clases, funciones, etc. podremos aprovechar la potencia de herramientas como Sphynx, un generador de documentación muy potente, que nos ofrece la posibilidad de generar la API de nuestros desarrollos consultable en una aplicación HTML, PDF, LateX. Compilador a exe para Windows. Esta herramienta se llama Py2exe y consigue que podamos distribuir en plataformas Windows nuestro software, ya que se encarga de proporcionar el intérprete y todas las dependencias que fuesen necesarias. Entornos y editores: 6
  • 7. gEdit: dispone de todas las características necesarias en un editor actual. Vi+pyflakes: una herramienta potentísima una vez se aprende. Eric IDE: entorno moderno, con autocompletado, estilo Eclipse. 3. Ventajas. Legibilidad La sintaxis de Python lo convierte en un lenguaje claro y legible tanto para expertos como para los más novatos en la programación, lo cual le está dando cierta fama entre los docentes que eligen a éste como 7
  • 8. un lenguaje introductorio. Su forma de organizarse impone ciertas normas a los programadores que de manera implícita los vuelve más productivos. Tiene menos dialectos (variaciones que no cambian la naturaleza intrínseca del lenguaje) que, por ejemplo, Perl. El hecho de definir los bloques mediante indentación previene los fallos causados por un incorrecto sangrado del código. Soporte Existen foros de ayuda a lo largo y ancho de Internet o el canal de IRC #Python que se encuentra en la primera posición de lenguajes de programación. La creciente comunidad de Python se fundamenta en el hecho de ser un lenguaje de código abierto, lo que promueve la corrección de errores, actualización, creación de parches e innovación, ya que cualquiera puede aportar sus conocimientos. Fácil/rápido de aprender Asemeja al pseudocódigo, evitando las largas y extrañas líneas de código que podemos ver en otros lenguajes de programación. En el mundo empresarial esto se traduce en un bajo costo al poder enseñar e implantarlo fácil y rapidamente a su plantilla de programadores. Desde el principio del aprendizaje pueden crearse códigos útiles casi de inmediato. Fácil/rápido de programar Se dice que Python es un lenguaje listo para ser ejecutado. No necesita seguir un proceso de compilación, comprobación y ejecución ni, como ocurre con otros lenguajes de scripting, editar el código fuera del entorno de ejecución. Permite modificar la capa de abstracción de alto nivel de la aplicación sin cambiar las reglas del negocio. A modo didáctico y para pruebas, el intérprete interactivo puede ser de gran ayuda, elevando su potencial si lo usamos para depurar trozos de código antes de insertarlos en la aplicación. Además, éste intérprete es facilmente extensible, incluso podemos incrustar código en C. Reusabilidad Hace hincapié en esto implementando módulos y paquetes. Existe la Librería Estándar de Python, parte de distribución, con un extenso 8
  • 9. número de módulos listos para ser usados. Además, es fácil con Python dividir el código en módulos para compartir funcionalidades con otras aplicaciones a modo de complementos de las mismas. Portabilidad No ha sido diseñado para un sistema operativo concreto. Su intérprete se escribió en ANSI C por lo que prácticamente podemos llevarlo a toda plataforma. No obstante ciertos módulos pueden implementar funcionalidades específicas de los sistemas. Programación Orientada a Objetos En contraposición a la mayoría de lenguajes de scripting, que implementan el nuevo paradigma como un añadido (add-on), Python se diseñó orientado a objetos. Sin embargo, en tareas simples, podemos seguir usando código estructurado. 4. Inconvenientes. El código en Python es más lento que su homólogo escrito en C/C++, puesto que no es un lenguaje compilado. No se comprueban los tipos de variables en tiempo de compilación. Aunque esto facilite la lectura/ escritura de código, al usar unos tipos dinámicos tan flexibles, los grandes proyectos en Python pueden ser difícilmente depurables. Además, la librería estándar de Python no es comparable en extensión con la de C/C++/C# o Java. Sin embargo, asciende rápidamente gracias a su comunidad. Pero, ¿qué opinan los programadores? 9
  • 10. 5. Ejemplo de un programa sencillo. # -*- coding: utf-8 -*- # Autor: Adrigm import random import string import pickle # Crea una lista con la longitud de la palabra def ocultar(cadena): ocultada = [] for i in cadena: ocultada += "_" return ocultada # Convierte la cadena en una lista. def listar(cadena): listada = [] for letra in cadena: listada += letra return listada # Devuelve -1 si no encuentra un carácter en una lista. def buscar(lista, caracter): for i in lista: if i == caracter: return 1 return -1 # Sustituye la letra dada en la palabra oculta si existe en palabra. def sustituir(palabra, oculta, letra): n = 0 while n < len(palabra): if palabra[n] == letra: oculta[n] = letra n += 1 10
  • 11. # Quita el último caracter de una lista de palabras. def quitarultimo(lista): n = 0 lista2 = range(len(lista)) while n < len(lista): palabra = lista[n] lista2[n] = palabra[:-1] n += 1 return lista2 # Convierte una letra en minúsculas. def convminusculas(letra): mayusculas = "ABCDEFGHIJKLMN?OPQRSTUVWXYZ" minusculas = "abcdefghijklmn?opqrstuvwxyz" n = 0 while n < len(mayusculas): if mayusculas[n] == letra: letra = minusculas[n] n += 1 return letra # Muñeco en ASCII. muneco = ["n"*6 + " -----", " |n"*6 + " -----", " ______n" + " |n"*6 + " -----", " ______n" + " | |n" + " |n"*5 + " -----", " ______n" + " | |n" + " O |n" + " |n"*4 + " -----", " ______n" + " | |n" + " O |n" + " =[:]= |n" + " |n"*3 + " -----", " ______n" + " | |n" + " O |n" + " =[:]= |n" + " / |n" + " |n"*2 + " -----"] # Lista de palabras en archivo. f = open("palabras.txt", "r") lista1 = f.readlines() lista = quitarultimo(lista1) # Asignación de palabra aleatoria y ocultar palabra = lista[random.randint(0, len(lista)-1)] listada = listar(palabra) oculta = ocultar(palabra) # Asignación de vidas. vidas = 7 nivel = 0 # Presentación. print "-"*20 print "?EL AHORCADO!" print "-"*20 print "Tienes 7 vidas para adivinar la palabran" # Bucle del juego. while vidas > 0: print "nTe quedan", vidas, "vidas" print muneco[nivel] print oculta letra = raw_input("Escribe una letra: ") letra = convminusculas(letra) if string.find(palabra, letra) == -1: vidas -= 1 nivel += 1 else: sustituir(listada, oculta, letra) if buscar(oculta, "_") == -1: print oculta 11
  • 12. break # Fin del juego. if vidas > 0: print "nSí, has ganado, la palabra era", palabra, "n" resultado = 1 else: print "nLo siento, perdiste, la palabra era", palabra, "n" resultado = 0 # Estadísticas. try: archivo = open("ahorcado.dat", "r") jugadas = pickle.load(archivo) ganadas = pickle.load(archivo) perdidas = pickle.load(archivo) archivo.close() except: archivo = open("ahorcado.dat", "w") jugadas = 0 ganadas = 0 perdidas = 0 archivo.close() jugadas += 1 if resultado == 1: ganadas += 1 else: perdidas += 1 archivo = open("ahorcado.dat", "w") pickle.dump(jugadas, archivo) pickle.dump(ganadas, archivo) pickle.dump(perdidas, archivo) archivo.close() print "Partidas jugadas:", jugadas print "Ganadas:", ganadas print "Perdidas:", perdidas 6. Referencias 12