• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Python
 

Python

on

  • 726 views

 

Statistics

Views

Total Views
726
Views on SlideShare
726
Embed Views
0

Actions

Likes
1
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Python Python Document Transcript

    • 2º Desarrollo Aplicaciones Entorno Servidor I.E.S. Gran Capitán Yamuza Álvarez, Sergio Cañas Poblete, Antonio1. Características 22. Requisitos 43. Ventajas 84. Inconvenientes 105. Ejemplo de un programa sencillo 116. Referencias 141. Características 1
    • Simple. Este lenguaje está caracterizado por ser de una complejidadmedia/baja, simple y minimalista. El pseudo-código de Pythonpermite centrarse en la solución del problema, que es realmente loimportante, y no en la sintaxis.Sencillo de aprender. Debido a esta característica, Python seconsidera uno de los lenguajes más sencillos de aprender.Código libre. Es un ejemplo de FLOSS (Free/Libre and Open SourceSoftware). Es decir, se pueden distribuir copias de este softwarelibremente. Esta es una de las razones por las que Python es tanbueno, ha sido creado y mejorado por una comunidad que soloquiere ver un mejor Python.Lenguaje de alto nivel. No hay que tener en cuenta detalles talescomo manejar la memoria empleada por el programa que se estádiseñando.Portable. Funciona en diversas plataformas, al ser Open Source, sinnecesidad de ningún cambio. Aunque sí se deben tener en cuentalas características del sistema: librerías, módulos exclusivos de unsistema…Interpretado. No existen compilaciones separadas y pasos deejecució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 otrosistema 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. RequisitosSi nos encontrásemos delante de un servidor de tipo Unix es probableque Python ya se encuentre instalado. Basta comprobarlo con una ordensimple en la consola de comandos: $ python 3
    • Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52)[GCC 4.3.3] on linux2Type "help", "copyright", "credits" or "license" for moreinformation.>>>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$ pythonbash: python3: command not founddebemos 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 pythonPara BSD podemos usar los ports de FreeBSD y en Solaris la herramientapkgadd.En MacOSX y Microsoft Windows nos dirigimos a http://python.org/download y descargamos el correspondiente .dmg o el instalador .exepara 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 esnecesario, pero sí para la producción. Y en este caso debemosmontarnos el servidor, o servidores, necesarios. Lo normal esutilizar apache2 más el módulo WSGI para servir el contenidodinámico, y un segundo servidor para servir todo lo estático.Generador de documentación. Si seguimos unos estándares enlas definiciones de clases, funciones, etc. podremos aprovecharla potencia de herramientas como Sphynx, un generador dedocumentación muy potente, que nos ofrece la posibilidad degenerar la API de nuestros desarrollos consultable en una aplicaciónHTML, PDF, LateX.Compilador a exe para Windows. Esta herramienta se llamaPy2exe y consigue que podamos distribuir en plataformas Windowsnuestro software, ya que se encarga de proporcionar el intérprete ytodas 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.LegibilidadLa sintaxis de Python lo convierte en un lenguaje claro y legible tantopara expertos como para los más novatos en la programación, lo cualle está dando cierta fama entre los docentes que eligen a éste como 7
    • un lenguaje introductorio. Su forma de organizarse impone ciertasnormas a los programadores que de manera implícita los vuelve másproductivos. Tiene menos dialectos (variaciones que no cambian lanaturaleza intrínseca del lenguaje) que, por ejemplo, Perl. El hecho dedefinir los bloques mediante indentación previene los fallos causados porun incorrecto sangrado del código.SoporteExisten foros de ayuda a lo largo y ancho de Internet o el canal deIRC #Python que se encuentra en la primera posición de lenguajesde programación. La creciente comunidad de Python se fundamentaen el hecho de ser un lenguaje de código abierto, lo que promueve lacorrección de errores, actualización, creación de parches e innovación, yaque cualquiera puede aportar sus conocimientos.Fácil/rápido de aprenderAsemeja al pseudocódigo, evitando las largas y extrañas líneas decódigo que podemos ver en otros lenguajes de programación. En elmundo empresarial esto se traduce en un bajo costo al poder enseñar eimplantarlo fácil y rapidamente a su plantilla de programadores. Desde elprincipio del aprendizaje pueden crearse códigos útiles casi de inmediato.Fácil/rápido de programarSe dice que Python es un lenguaje listo para ser ejecutado. No necesitaseguir un proceso de compilación, comprobación y ejecución ni, comoocurre con otros lenguajes de scripting, editar el código fuera del entornode ejecución. Permite modificar la capa de abstracción de alto nivel de laaplicación sin cambiar las reglas del negocio.A modo didáctico y para pruebas, el intérprete interactivo puede ser degran ayuda, elevando su potencial si lo usamos para depurar trozos decódigo antes de insertarlos en la aplicación. Además, éste intérprete esfacilmente extensible, incluso podemos incrustar código en C.ReusabilidadHace hincapié en esto implementando módulos y paquetes. Existela 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 Pythondividir el código en módulos para compartir funcionalidades con otrasaplicaciones a modo de complementos de las mismas.PortabilidadNo ha sido diseñado para un sistema operativo concreto. Su intérpretese escribió en ANSI C por lo que prácticamente podemos llevarlo atoda plataforma. No obstante ciertos módulos pueden implementarfuncionalidades específicas de los sistemas.Programación Orientada a ObjetosEn contraposición a la mayoría de lenguajes de scripting, queimplementan el nuevo paradigma como un añadido (add-on), Python sediseñó orientado a objetos. Sin embargo, en tareas simples, podemosseguir 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 tiposde variables en tiempo de compilación. Aunque esto facilite la lectura/escritura de código, al usar unos tipos dinámicos tan flexibles, los grandesproyectos en Python pueden ser difícilmente depurables. Además, lalibrería estándar de Python no es comparable en extensión con lade C/C++/C# o Java. Sin embargo, asciende rápidamente gracias a sucomunidad.Pero, ¿qué opinan los programadores? 9
    • 5. Ejemplo de un programa sencillo.# -*- coding: utf-8 -*-# Autor: Adrigmimport randomimport stringimport pickle# Crea una lista con la longitud de la palabradef 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 ocultarpalabra = lista[random.randint(0, len(lista)-1)]listada = listar(palabra)oculta = ocultar(palabra)# Asignación de vidas.vidas = 7nivel = 0# Presentación.print "-"*20print "?EL AHORCADO!"print "-"*20print "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 = 1else: 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 += 1if resultado == 1: ganadas += 1else: perdidas += 1archivo = open("ahorcado.dat", "w")pickle.dump(jugadas, archivo)pickle.dump(ganadas, archivo)pickle.dump(perdidas, archivo)archivo.close()print "Partidas jugadas:", jugadasprint "Ganadas:", ganadasprint "Perdidas:", perdidas6. Referencias 12
    • http://www.webdotdev.com/nvd/content/view/1073/http://programmers.stackexchange.com/questions/15468/what-are-the-drawbacks-of-pythonhttp://python-hispano.org/Iniciohttp://www.ironfroggy.com/software/i-am-worried-about-the-future-of-pythonhttp://es.wikipedia.org/wiki/Pythonhttp://www.pythontutorials.net/introduction-to-python.aspxhttp://python.majibu.org/http://es.wikipedia.org/wiki/Dialecto_(programaci%C3%B3n)http://www.carlospes.com/minidiccionario/reusabilidad.phphttp://dev.laptop.org/~edsiper/byteofpython_spanish/ch01s02.htmlhttp://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-de-python 13