SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Introducción a Python
 Andrés Ignacio Martínez Soto
 anmarso4@fiv.upv.es
 Seminarios Formación Polinux
 València 20 Noviembre 2008




            
NULL: Licencia de ésta presentación
Usted es libre de:
    * copiar, distribuir y comunicar públicamente la obra
    * hacer obras derivadas
    
Bajo las condiciones siguientes:
     Reconocimiento. Debe reconocer los créditos de la obra de la manera especificada 
     por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo 
     o apoyan el uso que hace de su obra).

      No comercial. No puede utilizar esta obra para fines comerciales.
     Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera 
     una obra derivada, sólo puede distribuir la obra generada bajo una licencia 
     idéntica a ésta.
    * Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de 
    la licencia de esta obra.
                                    
Contenido
    1. ¿Qué es Python?



               1.1 ¿Qué es Python?
       


               1.2 ¿Por qué Python?
       


               1.3 Python VS otros
       


               1.4 Instalación
       



    2. Introducción a Python



               2.1 Tipos de datos
       


               2.2 Control de flujo
       


               2.3 Entrada y salida
       


               2.4 Ficheros
       


               2.5 Funciones
       


               2.6 Excepciones
       
                             
Contenido
    3 Módulos y paquetes



               3.1 Módulos y paquetes
       


               3.2 La librería estándar
       



    4 Documentación



               4.1 Libros sobre Python
       


               4.2 Recursos online
       




                               
     
1. ¿Qué es
Python?

       
1.1 ¿Qué es Python? (I)
    Lenguaje de programación 




    Guido van Rossum principios años 90 cuyo 




    Sintaxis muy limpia que favorece un código legible.





    Características



        Lenguaje interpretado
    


        Tipado dinámico y fuerte
    


        Multiplataforma
    


        Orientado a objetos
    




                               
1.1 ¿Qué es Python? (I)
    Lenguaje interpretado:



        Código fuente + intérprete de Python = Programa
    


        Similar a Java:
    


                 El intérprete de Python ”compila” a bytecode el programa
         


         (lenguaje máquina optimizado para una máquina virtual de
           Python )

                      La 1ª vez que ejecutamos un programa éste compila a bytecode para la 
                  


                      máquina virtual de Python.
                      Después se ejecuta el bytecode optimizado generado, así se ejecuta más 
                  


                      rápido.


                                        
1.1 ¿Qué es Python? (II)
    Tipado dinámico



        No es necesario declarar el tipo de dato que va a contener 
    


        una determinada variable, éste se determina en tiempo de 
        ejecución según el valor asignado
    Fuertemente tipado



        No se permite tratar a una variable como si fuera de un 
    


        tipo distinto al que tiene, es necesario convertir de forma 
        explícita el tipo de la variable
        Ejemplo:
        >>> a=quot;Cadenaquot;; b=73; a+b
        Traceback (most recent call last):
         File quot;<stdin>quot;, line 1, in <module>
        TypeError: cannot concatenate 'str' and 'int' objects
        >>>
                                     
1.1 ¿Qué es Python? (III)
    Multiplataforma:



        Python es capaz de ser ejecutado en múltiples 
    


        arquitecturas y sistemas operativos:
                 Arquitecturas:  (”X86”,”ARM”,”Sparc” ... )
         


                 Sistemas Operativos: (”Windows”, ”GNU­Linux”, ”Unix”, 
         


                 ”Mac Os X”, ”Symbian” ... )




                                   
1.1 ¿Qué es Python? (IIII)
    Orientado a objetos:



        La orientación a objetos es un paradigma de 
    


        programación en el que los conceptos del mundo real 
        relevantes para nuestro problema se trasladan a clases y 
        objetos en nuestro programa. 
        La ejecución del programa consiste en una serie de 
    


        interacciones entre los objetos.
        Python también permite la programación imperativa, 
    


        programación funcional y programación orientada a 
        aspectos.

                            
1.2 ¿Por qué Python?
    Sintaxis clara, limpia y sencilla




    Tipado dinámico, gestión de memoria 



    automáticamente
    Gran cantidad de librerías disponibles de serie 




    Prototipado y desarrollo rápido de aplicaciones




    Lenguaje todoterreno





                         
1.2 ¿Quién utiliza Python?
    Todas las distribuciones Linux




    Gnome, KDE




    Industrias Light & Magic




    Google, Yahoo




    Universitat Jaume I de Castelló en las carreras de 



    Informática




                        
1.3 Python VS otros
     Python,C y Java (¡Hola Mundo!)



                                              Hola mundo en C
    Hola mundo en Python

                                              #include <stdio.h>
    print ”¡Hola Mundo!”

                                              int main (void) {
                                                   printf(”¡Hola Mundo!”);
                                                   return 0;
                                              }


    Hola mundo en Java

    public class HolaMundo {
        public static void main(String [] args) {
                  System.out.println(”¡Hola Mundo!”);
        }
    }


                                     
1.4 Instalación de Python
    GNU­Linux:



                 Lo más probable es que ya venga instalado, de todas 
         


                  maneras:
                         sudo apt­get install python
                     



    Windows:




        Dirígete a http://www.python.org/download/ y bájate 
    


         y ejecuta el instalador correspondiente
    Mac Os X:




        Dirígete a http://www.python.org/download/ y bájate 
    


         y ejecuta el instalador correspondiente
                                   
     
2. Introducción a
Python

          
2.  ¡Hola Mundo!

andreu@ilab:~$ python

Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type quot;helpquot;, quot;copyrightquot;, quot;creditsquot; or quot;licensequot; for more
information.
>>>
>>> print quot;¡Hola Mundo! , soy un intérprete de Pythonquot;
¡Hola Mundo! , soy un intérprete de Python




                         
2.1 Tipos de datos en Python (I)
    Python es un lenguage con tipado dinámico y 



    fuerte...
    En Python existen 5 tipos predefinidos de variables;



        Números:  integers,floats,longs,complex ...
    



        Cadenas: string
    



        Vectores: tuplas,listas ...
    


        Otros: diccionarios (hashes), objetos ...
    




                             
2.1 Tipos de datos en Python (II)
    Numéricos:



        Enteros:
    

                   >>> a=10; b=15; c=a+b; print quot;La suma de a+b esquot;,c
                   La suma de a+b es 25

        Reales:
    

                   >>> pi=3.14; f=2; r=5.50; long_circ=(f*pi*r);
                   print quot;La longitud de la circunferencia es quot;,long_circ
                   La longitud de la circunferencia es 34.54


        Longs:
    
                    >>> a=9L; b=3L; a/b
                    3L


        Complejos:
    



                    >>> a=1+0j; b=2+1j; a+b
                    (3+1j)

                                  
2.1 Tipos de datos en Python (III)
    Cadenas de carácteres:



                Siempre comienzan por comillas simples ' , o comillas dobles ”
        




     >>> init=quot;Me gusta muchoquot;
     >>> asignatura=quot;MTPquot;
     >>> centro=quot;FIVquot;
     >>> print quot;%s la asignatura %s de la %squot; % (init,asignatura,centro)
     Me gusta mucho la asignatura MTP de la FIV
     >>> print init+quot; la asignatura quot;+asignatura+quot; de la quot;+centro
     Me gusta mucho la asignatura MTP de la FIV
     >>> cadena=init+quot; la asignatura quot;+asignatura+quot; de la quot;+centro
     >>> print cadena
     Me gusta mucho la asignatura MTP de la FIV
     >>>




                                   
2.1 Tipos de datos en Python (IV)
    Estructuras de datos lineales:



        Listas:
    


             Puede haber listas de cualquier tipo de elementos (incluso de diferentes 
         


             tipos), un elemento de una lista es mutable (se puede modificar)
             >>> lista_cafeterias=[quot;La Vellaquot;,quot;Conservatorioquot;,quot;Trinquetquot;,quot;Àgoraquot;,quot;Tony'squot;]
             >>> for cafeteria in lista_cafeterias: print cafeteria
             ...
             La Vella
             Conservatorio
             Trinquet
             Àgora
             Tony's
             >>>
             >>> otra_lista=[1,3+3j,quot;Cadenitaquot;]
             >>> lista_de_listas=[otra_lista,lista_cafeterias,[”MTP”,”TCO”,”SIO”,”ETC”] ]

             Acceso a listas:
         


                 >>> lista_cafeterias[0]
                 'La Vella'
                 >>> lista_cafeterias[-1]
                 quot;Tony'squot;
                 >>> lista_cafeterias[:-1]
                 ['La Vella', 'Conservatorio', 'Trinquet', 'Àgora']
                 >>>
                                                 
2.1 Tipos de datos en Python (V)
    Tuplas:



        No se pueden modificar los elementos de una tupla
    



        >>> t = 12345, 54321, 'Foo'
        >>> t
        (12345, 54321, 'Foo')
        >>> t[2]=quot;Barquot;
        Traceback (most recent call last):
         File quot;<stdin>quot;, line 1, in <module>
        TypeError: 'tuple' object does not support item assignment
        >>>




                                  
2.1 Tipos de datos en Python (VI)
    Matrices:



        import math
        matriz2d=[ [1,2],[2,-12]]
        mult=math.pi

        for i in range(len(matriz2d)):
           for j in range(len(matriz2d[i])):
               matriz2d[i][j]*=mult

        for i in range(len(matriz2d)):
           for j in range(len(matriz2d[i])):
               print matriz2d[i][j]

        # Daría como resultado
        3.14159265359
        6.28318530718
        6.28318530718
        -37.6991118431


                                     
2.1 Tipos de datos en Python (VII)
    Otras estructuras de datos lineales:



        Pilas:
    
              >>> pila=[1,3,5,7]
              >>> pila.pop()
              7
              >>> pila.append(7)
              >>> pila[0]
              1
              >>> pila[-1]
              7
              >>>




        Colas:
    
              >>> queue = [quot;Ericquot;, quot;Johnquot;, quot;Michaelquot;]
              >>> queue.append(quot;Terryquot;)
              >>> queue.append(quot;Grahamquot;)
              >>> queue.pop(0)
              'Eric'
              >>> queue.pop(0)
              'John'
              >>> queue
              ['Michael', 'Terry', 'Graham']


                                          
2.1 Tipos de datos en Python (VIII)
    Diccionarios



          Hash, conjunto de pares ordenados {clave:valor}
     



         asignaturas = {”mtp”:”dsic”,”etc2g”:”disca”}
         >>>asignaturas[”mtp”]
         dsic

         asignaturas.has_key(”est”)
         False

         >>> asignaturas.keys()
         ['mtp', 'etc2g']

         >>> asignaturas.items()
         [('mtp', 'dsic'), ('etc2g', 'disca')]




                                            
2.2 Control de flujo (I)
    Condicionales:


               If dia==”Jueves”:
                     print ”Hoy hay charlas de Polinux”

               elif dia==”Sábado”:
                     print ”Hoy habrá fiesta”

               else:
                    print ”Hoy será un día aburrido”



               Si se van a evaluar varias condiciones, mejor ponerlas entre 
       


               paréntesis
               If (dia>28) and (mes==2) and ( (anyo%100 !=0) or (anyo%400!=0):
                     print ”Error, el anyo ”+anyo+ ”no es bisiesto”
               elif (anyo%100==0) and (anyo%400==0):
                     print ”El anyo ”+anyo+ ” es bisiesto”
               else:
                     pass
                                       
2.2 Control de flujo (II)
    Bucles:



        Bucle for
    


                   Es un bucle foreach, diferente al de C/C++,Java ... 
              


                   Está pensado para iterar sobre una secuencia de elementos
              


                  asignaturas=[”MTP”,”PRG”,”SIO”,”SOP”,”SOP2”,”RED”]
                  for asignatura in asignaturas:
                       print ”Voy a aprobar ”+asignatura


                   Si queremos ”imitar” a la forma de C/C++ ... debemos hacerlo así:
              




                    asignaturas=[”MTP”,”PRG”,”SIO”,”SOP”,”SOP2”,”RED”]
                    for i in range(len(asignaturas)):
                           print ”Voy a aprobar ”+asignatura[i]


                      for i in range(0,15000):
                            if (EsPrimo(i)):
                                 print ”%d ¡es primo!”%(i)

                                      
2.2 Control de flujo (III)
    Bucles:



         Bucle while:
    


        while i<100:
            print i
            i=i*2


        lista=range(0,10)
        while len(lista)!=0:
             lista.pop()

        while (valor<100) and (valor>200):
            valor=int(raw_input(”Dame un valor entre 100 y 200: ”))
            if valor<100:
                  print ”Necesito un valor mayor”
            elif valor>200:
                  print ”Necesito un valor menor”
            else:
                  break
                                    
2.3 Entrada y salida (I)
    Entrada estándar:



        2 métodos:
    


              raw_input(), y read() y sus derivados
          


              raw_input() lee de stdin
          


              read() lee de un flujo (fichero,stdin,socket ... )
          


        nombre=raw_input(”¿Cómo te llamas? ”)
        print ”Encantado, ”+nombre

        import sys
        ...
        print ”Dame tu nombre: ”
        nombre=sys.stdin.readline()
        print ”Te llamas %s”%(nombre)




                                   
2.3 Entrada y salida (II)
    Salida estándar:



        2 métodos:
    


                 print()  y write()
         


                 print() escribe en stdout
         


                 Write() escribe en un flujo (fichero,stdin,socket ... )
         



             print ”¡Python mola!”

             lang=”Perl”; caract=”ofuscado”
             print ”¡%s es %s !” % (lang,caract)

             import sys
             sys.stdout.write(”Foo & Bar”)




                                       
2.4 Ficheros (I)
    Ficheros:



        De estilo UNIX
    


        Abrir fichero:
    


             fich=open(nombre_fichero,modo)
         


             Modos de apertura:
         


                     r →  Lectura, texto
                 


                     rb → Lectura, binario
                 


                     w →  Escritura, texto
                 


                     wb → Escritura, binario
                 


                     a → Añadir (append)
                 


                        Si se le añade un + después del modo de apertura, si no existe el 


                         fichero, se crea.
        Cerrar fichero:
    


             fich.close()
         

                                        
2.4 Ficheros (II)
    Ficheros:



        Leer:
    


                 fich.read(num_bytes)  → lee num_bytes de un fichero , si no se 
         


                 especifica parámetro, se lee el fichero completo
                 fich.readline() → lee fich hasta encontrar 'n'
         




        Ecribir:
    


                 fich.write(variable) → escribe variable en un fichero
         


                 fich.writeline(”Python”) → escribe Pythonn en un fichero
         




                                     
2.4 Ficheros (III)
    Ejemplos:

                                         try:
                                                fentrada=open(”entrada.txt”,”r”)
      fich=open(”fichero.txt”,”r”)              fsalida=open(”salida.txt”,”w+”)
      for linea in fichero:
            print linea                  except:
      fich.close()                           import sys
                                             print ”Ha fallado la apertura”
                                             sys.exit(-1)
      fich=open(”fichero.tx”,”r”)
      linea=fich.readline()
      print linea                        while (True):
      while (True):                          linea=fentrada.readline()
           linea=fich.readline()             fsalida.write(linea)
           if (len(linea))==0:
                 break                   fentrada.close()
                                         fsalida.close()
           print linea
      fich.close()



                                      
2.4 Ficheros (IV)
    Serialización simple (cPickle):



                 Guarda y recupera cualquier tipo de datos en un fichero en 
         


                  formato binario.
     >> import cPickle
     >> datos = {'Nombre':'Andrés','Edad':22}
     >> f=open(”datos.binarios”,”w”)
     >> cPickle.dump(f,datos)
     >> f.close()
     >> file=open(”datos.binarios”,”rb”)
     >> copia=cPiclke.load(file)
     >> copia['Nombre']
        Andrés




                                   
2.5 Funciones (I)
     Se definen con la palabra reservada 'def'...


    def nombre_función (parámetro1,*args,**kwargs):
         # Aquí el cuerpo de la función                  nombre es el parámetro
                                                        que se le pasa a la función
    def Saludar():
        Print ”!Hola Mundo!”

    def SaludarconNombre (nombre):
        Print ”!Hola %s!” % (nombre)

    def SaludarconNombre (nombre=”anónimo”):
        Print ”!Hola %s!” % (nombre)
                                              nombre es el parámetro
                                            que se le pasa a la función,
                                       en este caso tiene un valor por defecto




                                  
2.5 Funciones (II)
    Llamadas a funciones:


                                                  SaludarconNombre es el nombre de
                                                  la función en el espacio de nombres
    def SaludarconNombre (nombre=”anónimo”):
                                                  nombre es el parámetro pasado en la
        print ”¡Hola %s!” % (nombre)
                                                            llamada a función
    >>> nombre=”Andrés”
    >>> SaludarconNombre(nombre)
    ¡Hola Andrés!


    def Sumar(a,b):                               Si no se le pasa el número
        print a+b                              correcto de argumentos, Python
                                            muestra una excepción de tipo TypeError
    >>> Sumar(1)
    Traceback (most recent call last):
      File quot;<stdin>quot;, line 1, in <module>
    TypeError: Sumar() takes exactly 2
    arguments (1 given)
    >>> Sumar(1,2)
    3
                                    
2.5 Funciones (III)
    El paso de parámetros en funciones se hace por referencia.




    Los cambios en variables sólo se 'reflejan' fuera de la función si el 



      parámetro pasado es un objeto mutable (listas).
    Para devolver valores utilizaremos la palabra reservada 'return'.




    La mejor forma de asegurarnos que la variable 'de fuera' se modifica 



      tras ejecutar la función, es devolver la variable modificada.

    def Incrementa(valor,cantidad):
         valor=valor+cantidad
         return valor

    >>> val=10
    >>> val=Incrementa(val,100)
    >>> print val
    110
    >>>

                                   
2.5 Funciones (IV)
     Paso de parámetros *args y **kwargs:
 


def ImprimeLista (propietario,*lista):          def varios(p1, **otros):
     print ”Tengo una lista de ”+propietario      print ”p1 vale ”+str(p1)
     for elemento in lista:                       for i in otros.items():
                                        lista
          print elemento                             print i

                                                >>> varios(quot;algoquot;,uno=quot;dosquot;,dos=3)
>>>ImprimeLista(quot;Camareroquot;,quot;Bravasquot;,quot;Sepiaquot;)    p1 valealgo
Tengo una lista de Camarero                     ('dos', 3)
Bravas                                          ('uno', 'dos')
Sepia                                           >>>




                                     
2.6 Excepciones
    Una excepción se lanza cuando ha ocurrido algún error que Python 



      no ”sabe” como manejar, y termina el programa:
    def division(a,b):
         c=(a/b)
         return c

    >>> division(10/0)
    Traceback (most recent call last):
                                                                   La excepción, y su
     File quot;<stdin>quot;, line 1, in <module>
                                                                       explicación
    ZeroDivisionError: integer division or modulo by
    zero
                                                       >>> try:
                         Excepción a capturar          ... division(10,0)
    try:                                               ... except ZeroDivisionError:
          division(10,0)                               ... print quot;No se puede dividir por ceroquot;
                                                       ... except:
    except ZeroDivisionError:                          ... print quot;Error inesperadoquot;
          print ”No se puede dividir por cero”         ... finally:
    except:                                            ... print division(10,1)
                                                       ...
          print ”Error inesperado”
                                                       No se puede dividir por cero
    finally:                                           10
          print division(10,1)
                                     
     
3. Módulos y
paquetes

      
3.1 Módulos y paquetes
      Módulo: Conjunto de funciones, clases y variables guardadas en un fichero .py




      Paquete: Colección de módulos situados en un mismo directorio.




                   Para que un directorio sea reconocido como paquete es necesario que éste 
              


                     contenga un fichero de nombre __init__.py que puede estar vacío. 
                  Un paquete puede contener subpaquetes (subdirectorios, cada uno con su 
              


                    __init__.py)
                                                                     # fichero funciones.py
                                                                     def saludar (nombre):
    La diferencia entre
                                                                          print ”Hola ”+nombre
    from paquete import * e import *
    está en el espacio de nombres.
                                                                     def sumar (a,b):
                                                                          return (a+b)
    # paquete.py             >>> import math
    def algo():              >>> print math.cos(0)
                                                                     #intérprete
         Print ”algo”        1.0
                                                                     >>> from funciones import *
                                                                     >>> saludar(”Andrés”)
    import paquete
                                                                          Hola Andrés
    paquete.algo()
    --------------------------------------------------------
                                                                     >>> res=sumar(1+3)
    from paquete import * / algo:
                                                                     >>> print res
    algo()
                                                                         4
                                                  
3.2 La librería estándar (I)
    Python tiene una amplia librería estándar 



     implementada para casi todas las plataformas y 
     sistemas operativos con muchísimos módulos 
     útiles.
    Sistemas operativos:



               sys y os
       



    Bases de datos:



               Pysqlite3, MySQLdb
       



    Redes:



               httplib,socket,urllib,xmlrpc,soap ...
       


                               
3.2 La librería estándar (II)
    Hay muchos tipos de módulos para hacer casi 



     cualquier cosa:
               Procesamiento de texto, redes, bases de datos, 
       


                 sistemas operativos, cálculos complejos, gráficos, 
                 interfaces gŕaficas, páginas web, comunicaciones 
                 bluetooth …
    Consultar Python Standard Library:



                        http://effbot.org/librarybook/
                    



    Consultar PyDoc:



               http://pydoc.org
       


                                  
3.2 La librería estándar (III)
    Instalar un paquete es fácil:



               Lo compilamos e instalamos nosotros mismos
       


                 cd paquete
                 python setup.py build
                 sudo python setup.py install



               Python se encarga de hacerlo:
       




               sudo easy_install nombre_paquete




                                    
     
4. Documentación



       
4.1 Libros sobre Python (I)




              
4.1 Libros sobre Python (II)
    Libros esenciales:



               Programming Python
       


               Learning Python
       



               Python Standard Library
       


               Introducción a la programación Python y C vol I
       


               Python in a Nutshell
       


               Python for Dummies
       



               Python Cookbook
       


               Dive into Python
       


               Programming like a scientist with Python
       


                              
4.2 Recursos online (I)
    Para iniciarse:



               Introducción a la programación con Python y C 
       


                 volumen I, Python (Universitat Jaume I):
                    http://marmota.act.uji.es/ii04/teoria.shtml
                




               Python para todos, Raúl González Duque:
       


                          http://mundogeek.net
                      



               Dive into Python:
       



                    http://diveintopython.org/
                




               Charla  ”Python avanzado” de Polinux:
       


                          http://www.polinux.upv.es
                      


                                    
4.2 Recursos online (II)
    General:



                 Página web oficial de Python
         


                      http://www.python.org
                  




        Effbot (página web de Fredrik Lundh)
    



                            http://effbot.org
                        


                 Lista python­es en Aditel
         


                      http://listas.aditel.org/archivos/python­es
                  




                                     
     
¿Alguna pregunta o duda?



    ¡Gracias por vuestra atención!

    Andrés Ignacio Martínez Soto



    http://www.andresmartinezsoto.es



    anmarso4@fiv.upv.es



                  
FIN


    END OF



    PRESENTATION


          

Más contenido relacionado

La actualidad más candente

これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線MeetupMasatoshi Tada
 
Triggers en BD mysql
Triggers en BD mysqlTriggers en BD mysql
Triggers en BD mysqlEmerson Garay
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IEKaren Olan
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミングlestrrat
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Relevamiento sobre routers.
Relevamiento sobre routers.Relevamiento sobre routers.
Relevamiento sobre routers.GabrielCorsaro
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansEmerson Garay
 
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE).NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)Tusyoshi Matsuzaki
 
Python Variable Types, List, Tuple, Dictionary
Python Variable Types, List, Tuple, DictionaryPython Variable Types, List, Tuple, Dictionary
Python Variable Types, List, Tuple, DictionarySoba Arjun
 
Tutorial voz ip packet tracer
Tutorial voz ip packet tracerTutorial voz ip packet tracer
Tutorial voz ip packet tracerJosé Guerrero
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話dcubeio
 
Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014Dario Esquina
 

La actualidad más candente (20)

これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
 
Triggers en BD mysql
Triggers en BD mysqlTriggers en BD mysql
Triggers en BD mysql
 
Wireshark
WiresharkWireshark
Wireshark
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IE
 
Naming Conventions
Naming ConventionsNaming Conventions
Naming Conventions
 
List in java
List in javaList in java
List in java
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミング
 
Java String
Java String Java String
Java String
 
Python functions
Python functionsPython functions
Python functions
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Relevamiento sobre routers.
Relevamiento sobre routers.Relevamiento sobre routers.
Relevamiento sobre routers.
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeans
 
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE).NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
 
Input and Output
Input and OutputInput and Output
Input and Output
 
Python Variable Types, List, Tuple, Dictionary
Python Variable Types, List, Tuple, DictionaryPython Variable Types, List, Tuple, Dictionary
Python Variable Types, List, Tuple, Dictionary
 
Tutorial voz ip packet tracer
Tutorial voz ip packet tracerTutorial voz ip packet tracer
Tutorial voz ip packet tracer
 
Guía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez HGuía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez H
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話
 
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBCSEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
 
Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014
 

Similar a Introduccion a Python

FUNDAMENTOS PYTHON.ppsx
FUNDAMENTOS PYTHON.ppsxFUNDAMENTOS PYTHON.ppsx
FUNDAMENTOS PYTHON.ppsxFernando Solis
 
Python_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdfPython_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdfCeth1
 
Integrando C com Python
Integrando C com PythonIntegrando C com Python
Integrando C com Pythongsroma
 
Manual de python
Manual de pythonManual de python
Manual de pythonULEAM
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 
Transparencias taller Python
Transparencias taller PythonTransparencias taller Python
Transparencias taller PythonSergio Soto
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Pythonmaluacsa
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machosJorge Hernandez
 
Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mariano Reingart
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Ricardo Guerrero Gómez-Olmedo
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Daniel González Cerviño
 
Intro Python
Intro PythonIntro Python
Intro Pythonctme
 

Similar a Introduccion a Python (20)

Yudy Centeno M
Yudy Centeno MYudy Centeno M
Yudy Centeno M
 
FUNDAMENTOS PYTHON.ppsx
FUNDAMENTOS PYTHON.ppsxFUNDAMENTOS PYTHON.ppsx
FUNDAMENTOS PYTHON.ppsx
 
Python_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdfPython_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdf
 
Integrando C com Python
Integrando C com PythonIntegrando C com Python
Integrando C com Python
 
Python101
Python101Python101
Python101
 
Manual de python
Manual de pythonManual de python
Manual de python
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 
Programador Jr. para Python Primera Parte
Programador Jr. para Python Primera ParteProgramador Jr. para Python Primera Parte
Programador Jr. para Python Primera Parte
 
Transparencias taller Python
Transparencias taller PythonTransparencias taller Python
Transparencias taller Python
 
Phyton
PhytonPhyton
Phyton
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Python
 
Introduccion a Ppython
Introduccion a PpythonIntroduccion a Ppython
Introduccion a Ppython
 
Intro python
Intro pythonIntro python
Intro python
 
Intro python
Intro pythonIntro python
Intro python
 
Eventos intropython
Eventos intropythonEventos intropython
Eventos intropython
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machos
 
Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
Intro Python
Intro PythonIntro Python
Intro Python
 

Más de Andrés Ignacio Martínez Soto (8)

Triptic20anys copia
Triptic20anys copiaTriptic20anys copia
Triptic20anys copia
 
Triptico afergodella
Triptico afergodellaTriptico afergodella
Triptico afergodella
 
Ferromed01
Ferromed01Ferromed01
Ferromed01
 
Llibret Torreta Associació Ferroviària de Godella
Llibret Torreta Associació Ferroviària de GodellaLlibret Torreta Associació Ferroviària de Godella
Llibret Torreta Associació Ferroviària de Godella
 
Ferromed 2
Ferromed 2Ferromed 2
Ferromed 2
 
21 casos de cooperativas de viviendas
21 casos de cooperativas de viviendas21 casos de cooperativas de viviendas
21 casos de cooperativas de viviendas
 
SQLite3
SQLite3SQLite3
SQLite3
 
Introducción a LaTeX
Introducción a LaTeXIntroducción a LaTeX
Introducción a LaTeX
 

Último

presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...solanocortezluisalfr
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (14)

presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Introduccion a Python

  • 1. Introducción a Python Andrés Ignacio Martínez Soto anmarso4@fiv.upv.es Seminarios Formación Polinux València 20 Noviembre 2008    
  • 2. NULL: Licencia de ésta presentación Usted es libre de:     * copiar, distribuir y comunicar públicamente la obra     * hacer obras derivadas      Bajo las condiciones siguientes:      Reconocimiento. Debe reconocer los créditos de la obra de la manera especificada  por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo  o apoyan el uso que hace de su obra).       No comercial. No puede utilizar esta obra para fines comerciales.      Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera  una obra derivada, sólo puede distribuir la obra generada bajo una licencia  idéntica a ésta.     * Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de  la licencia de esta obra.    
  • 3. Contenido 1. ¿Qué es Python?  1.1 ¿Qué es Python?  1.2 ¿Por qué Python?  1.3 Python VS otros  1.4 Instalación  2. Introducción a Python  2.1 Tipos de datos  2.2 Control de flujo  2.3 Entrada y salida  2.4 Ficheros  2.5 Funciones  2.6 Excepciones     
  • 4. Contenido 3 Módulos y paquetes  3.1 Módulos y paquetes  3.2 La librería estándar  4 Documentación  4.1 Libros sobre Python  4.2 Recursos online     
  • 5.    
  • 7. 1.1 ¿Qué es Python? (I) Lenguaje de programación   Guido van Rossum principios años 90 cuyo   Sintaxis muy limpia que favorece un código legible.  Características  Lenguaje interpretado  Tipado dinámico y fuerte  Multiplataforma  Orientado a objetos     
  • 8. 1.1 ¿Qué es Python? (I) Lenguaje interpretado:  Código fuente + intérprete de Python = Programa  Similar a Java:  El intérprete de Python ”compila” a bytecode el programa  (lenguaje máquina optimizado para una máquina virtual de Python ) La 1ª vez que ejecutamos un programa éste compila a bytecode para la   máquina virtual de Python. Después se ejecuta el bytecode optimizado generado, así se ejecuta más   rápido.    
  • 9. 1.1 ¿Qué es Python? (II) Tipado dinámico  No es necesario declarar el tipo de dato que va a contener   una determinada variable, éste se determina en tiempo de  ejecución según el valor asignado Fuertemente tipado  No se permite tratar a una variable como si fuera de un   tipo distinto al que tiene, es necesario convertir de forma  explícita el tipo de la variable Ejemplo: >>> a=quot;Cadenaquot;; b=73; a+b Traceback (most recent call last): File quot;<stdin>quot;, line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects >>>    
  • 10. 1.1 ¿Qué es Python? (III) Multiplataforma:  Python es capaz de ser ejecutado en múltiples   arquitecturas y sistemas operativos: Arquitecturas:  (”X86”,”ARM”,”Sparc” ... )  Sistemas Operativos: (”Windows”, ”GNU­Linux”, ”Unix”,   ”Mac Os X”, ”Symbian” ... )    
  • 11. 1.1 ¿Qué es Python? (IIII) Orientado a objetos:  La orientación a objetos es un paradigma de   programación en el que los conceptos del mundo real  relevantes para nuestro problema se trasladan a clases y  objetos en nuestro programa.  La ejecución del programa consiste en una serie de   interacciones entre los objetos. Python también permite la programación imperativa,   programación funcional y programación orientada a  aspectos.    
  • 12. 1.2 ¿Por qué Python? Sintaxis clara, limpia y sencilla  Tipado dinámico, gestión de memoria   automáticamente Gran cantidad de librerías disponibles de serie   Prototipado y desarrollo rápido de aplicaciones  Lenguaje todoterreno     
  • 13. 1.2 ¿Quién utiliza Python? Todas las distribuciones Linux  Gnome, KDE  Industrias Light & Magic  Google, Yahoo  Universitat Jaume I de Castelló en las carreras de   Informática    
  • 14. 1.3 Python VS otros Python,C y Java (¡Hola Mundo!)  Hola mundo en C Hola mundo en Python #include <stdio.h> print ”¡Hola Mundo!” int main (void) { printf(”¡Hola Mundo!”); return 0; } Hola mundo en Java public class HolaMundo { public static void main(String [] args) { System.out.println(”¡Hola Mundo!”); } }    
  • 15. 1.4 Instalación de Python GNU­Linux:  Lo más probable es que ya venga instalado, de todas   maneras: sudo apt­get install python  Windows:  Dirígete a http://www.python.org/download/ y bájate   y ejecuta el instalador correspondiente Mac Os X:  Dirígete a http://www.python.org/download/ y bájate   y ejecuta el instalador correspondiente    
  • 16.    
  • 18. 2.  ¡Hola Mundo! andreu@ilab:~$ python Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49) [GCC 4.3.2] on linux2 Type quot;helpquot;, quot;copyrightquot;, quot;creditsquot; or quot;licensequot; for more information. >>> >>> print quot;¡Hola Mundo! , soy un intérprete de Pythonquot; ¡Hola Mundo! , soy un intérprete de Python    
  • 19. 2.1 Tipos de datos en Python (I) Python es un lenguage con tipado dinámico y   fuerte... En Python existen 5 tipos predefinidos de variables;  Números:  integers,floats,longs,complex ...  Cadenas: string  Vectores: tuplas,listas ...  Otros: diccionarios (hashes), objetos ...     
  • 20. 2.1 Tipos de datos en Python (II) Numéricos:  Enteros:  >>> a=10; b=15; c=a+b; print quot;La suma de a+b esquot;,c La suma de a+b es 25 Reales:  >>> pi=3.14; f=2; r=5.50; long_circ=(f*pi*r); print quot;La longitud de la circunferencia es quot;,long_circ La longitud de la circunferencia es 34.54 Longs:  >>> a=9L; b=3L; a/b 3L Complejos:  >>> a=1+0j; b=2+1j; a+b (3+1j)    
  • 21. 2.1 Tipos de datos en Python (III) Cadenas de carácteres:  Siempre comienzan por comillas simples ' , o comillas dobles ”  >>> init=quot;Me gusta muchoquot; >>> asignatura=quot;MTPquot; >>> centro=quot;FIVquot; >>> print quot;%s la asignatura %s de la %squot; % (init,asignatura,centro) Me gusta mucho la asignatura MTP de la FIV >>> print init+quot; la asignatura quot;+asignatura+quot; de la quot;+centro Me gusta mucho la asignatura MTP de la FIV >>> cadena=init+quot; la asignatura quot;+asignatura+quot; de la quot;+centro >>> print cadena Me gusta mucho la asignatura MTP de la FIV >>>    
  • 22. 2.1 Tipos de datos en Python (IV) Estructuras de datos lineales:  Listas:  Puede haber listas de cualquier tipo de elementos (incluso de diferentes   tipos), un elemento de una lista es mutable (se puede modificar) >>> lista_cafeterias=[quot;La Vellaquot;,quot;Conservatorioquot;,quot;Trinquetquot;,quot;Àgoraquot;,quot;Tony'squot;] >>> for cafeteria in lista_cafeterias: print cafeteria ... La Vella Conservatorio Trinquet Àgora Tony's >>> >>> otra_lista=[1,3+3j,quot;Cadenitaquot;] >>> lista_de_listas=[otra_lista,lista_cafeterias,[”MTP”,”TCO”,”SIO”,”ETC”] ] Acceso a listas:  >>> lista_cafeterias[0] 'La Vella' >>> lista_cafeterias[-1] quot;Tony'squot; >>> lista_cafeterias[:-1] ['La Vella', 'Conservatorio', 'Trinquet', 'Àgora'] >>>    
  • 23. 2.1 Tipos de datos en Python (V) Tuplas:  No se pueden modificar los elementos de una tupla  >>> t = 12345, 54321, 'Foo' >>> t (12345, 54321, 'Foo') >>> t[2]=quot;Barquot; Traceback (most recent call last): File quot;<stdin>quot;, line 1, in <module> TypeError: 'tuple' object does not support item assignment >>>    
  • 24. 2.1 Tipos de datos en Python (VI) Matrices:  import math matriz2d=[ [1,2],[2,-12]] mult=math.pi for i in range(len(matriz2d)): for j in range(len(matriz2d[i])): matriz2d[i][j]*=mult for i in range(len(matriz2d)): for j in range(len(matriz2d[i])): print matriz2d[i][j] # Daría como resultado 3.14159265359 6.28318530718 6.28318530718 -37.6991118431    
  • 25. 2.1 Tipos de datos en Python (VII) Otras estructuras de datos lineales:  Pilas:  >>> pila=[1,3,5,7] >>> pila.pop() 7 >>> pila.append(7) >>> pila[0] 1 >>> pila[-1] 7 >>> Colas:  >>> queue = [quot;Ericquot;, quot;Johnquot;, quot;Michaelquot;] >>> queue.append(quot;Terryquot;) >>> queue.append(quot;Grahamquot;) >>> queue.pop(0) 'Eric' >>> queue.pop(0) 'John' >>> queue ['Michael', 'Terry', 'Graham']    
  • 26. 2.1 Tipos de datos en Python (VIII) Diccionarios  Hash, conjunto de pares ordenados {clave:valor}  asignaturas = {”mtp”:”dsic”,”etc2g”:”disca”} >>>asignaturas[”mtp”] dsic asignaturas.has_key(”est”) False >>> asignaturas.keys() ['mtp', 'etc2g'] >>> asignaturas.items() [('mtp', 'dsic'), ('etc2g', 'disca')]    
  • 27. 2.2 Control de flujo (I) Condicionales:  If dia==”Jueves”: print ”Hoy hay charlas de Polinux” elif dia==”Sábado”: print ”Hoy habrá fiesta” else: print ”Hoy será un día aburrido” Si se van a evaluar varias condiciones, mejor ponerlas entre   paréntesis If (dia>28) and (mes==2) and ( (anyo%100 !=0) or (anyo%400!=0): print ”Error, el anyo ”+anyo+ ”no es bisiesto” elif (anyo%100==0) and (anyo%400==0): print ”El anyo ”+anyo+ ” es bisiesto” else: pass    
  • 28. 2.2 Control de flujo (II) Bucles:  Bucle for  Es un bucle foreach, diferente al de C/C++,Java ...   Está pensado para iterar sobre una secuencia de elementos  asignaturas=[”MTP”,”PRG”,”SIO”,”SOP”,”SOP2”,”RED”] for asignatura in asignaturas: print ”Voy a aprobar ”+asignatura Si queremos ”imitar” a la forma de C/C++ ... debemos hacerlo así:  asignaturas=[”MTP”,”PRG”,”SIO”,”SOP”,”SOP2”,”RED”] for i in range(len(asignaturas)): print ”Voy a aprobar ”+asignatura[i] for i in range(0,15000): if (EsPrimo(i)): print ”%d ¡es primo!”%(i)    
  • 29. 2.2 Control de flujo (III) Bucles:  Bucle while:  while i<100: print i i=i*2 lista=range(0,10) while len(lista)!=0: lista.pop() while (valor<100) and (valor>200): valor=int(raw_input(”Dame un valor entre 100 y 200: ”)) if valor<100: print ”Necesito un valor mayor” elif valor>200: print ”Necesito un valor menor” else: break    
  • 30. 2.3 Entrada y salida (I) Entrada estándar:  2 métodos:  raw_input(), y read() y sus derivados  raw_input() lee de stdin  read() lee de un flujo (fichero,stdin,socket ... )  nombre=raw_input(”¿Cómo te llamas? ”) print ”Encantado, ”+nombre import sys ... print ”Dame tu nombre: ” nombre=sys.stdin.readline() print ”Te llamas %s”%(nombre)    
  • 31. 2.3 Entrada y salida (II) Salida estándar:  2 métodos:  print()  y write()  print() escribe en stdout  Write() escribe en un flujo (fichero,stdin,socket ... )  print ”¡Python mola!” lang=”Perl”; caract=”ofuscado” print ”¡%s es %s !” % (lang,caract) import sys sys.stdout.write(”Foo & Bar”)    
  • 32. 2.4 Ficheros (I) Ficheros:  De estilo UNIX  Abrir fichero:  fich=open(nombre_fichero,modo)  Modos de apertura:  r →  Lectura, texto  rb → Lectura, binario  w →  Escritura, texto  wb → Escritura, binario  a → Añadir (append)   Si se le añade un + después del modo de apertura, si no existe el  fichero, se crea. Cerrar fichero:  fich.close()     
  • 33. 2.4 Ficheros (II) Ficheros:  Leer:  fich.read(num_bytes)  → lee num_bytes de un fichero , si no se   especifica parámetro, se lee el fichero completo fich.readline() → lee fich hasta encontrar 'n'  Ecribir:  fich.write(variable) → escribe variable en un fichero  fich.writeline(”Python”) → escribe Pythonn en un fichero     
  • 34. 2.4 Ficheros (III) Ejemplos:  try: fentrada=open(”entrada.txt”,”r”) fich=open(”fichero.txt”,”r”) fsalida=open(”salida.txt”,”w+”) for linea in fichero: print linea except: fich.close() import sys print ”Ha fallado la apertura” sys.exit(-1) fich=open(”fichero.tx”,”r”) linea=fich.readline() print linea while (True): while (True): linea=fentrada.readline() linea=fich.readline() fsalida.write(linea) if (len(linea))==0: break fentrada.close() fsalida.close() print linea fich.close()    
  • 35. 2.4 Ficheros (IV) Serialización simple (cPickle):  Guarda y recupera cualquier tipo de datos en un fichero en   formato binario. >> import cPickle >> datos = {'Nombre':'Andrés','Edad':22} >> f=open(”datos.binarios”,”w”) >> cPickle.dump(f,datos) >> f.close() >> file=open(”datos.binarios”,”rb”) >> copia=cPiclke.load(file) >> copia['Nombre'] Andrés    
  • 36. 2.5 Funciones (I) Se definen con la palabra reservada 'def'...  def nombre_función (parámetro1,*args,**kwargs): # Aquí el cuerpo de la función nombre es el parámetro que se le pasa a la función def Saludar(): Print ”!Hola Mundo!” def SaludarconNombre (nombre): Print ”!Hola %s!” % (nombre) def SaludarconNombre (nombre=”anónimo”): Print ”!Hola %s!” % (nombre) nombre es el parámetro que se le pasa a la función, en este caso tiene un valor por defecto    
  • 37. 2.5 Funciones (II) Llamadas a funciones:  SaludarconNombre es el nombre de la función en el espacio de nombres def SaludarconNombre (nombre=”anónimo”): nombre es el parámetro pasado en la print ”¡Hola %s!” % (nombre) llamada a función >>> nombre=”Andrés” >>> SaludarconNombre(nombre) ¡Hola Andrés! def Sumar(a,b): Si no se le pasa el número print a+b correcto de argumentos, Python muestra una excepción de tipo TypeError >>> Sumar(1) Traceback (most recent call last): File quot;<stdin>quot;, line 1, in <module> TypeError: Sumar() takes exactly 2 arguments (1 given) >>> Sumar(1,2) 3    
  • 38. 2.5 Funciones (III) El paso de parámetros en funciones se hace por referencia.  Los cambios en variables sólo se 'reflejan' fuera de la función si el   parámetro pasado es un objeto mutable (listas). Para devolver valores utilizaremos la palabra reservada 'return'.  La mejor forma de asegurarnos que la variable 'de fuera' se modifica   tras ejecutar la función, es devolver la variable modificada. def Incrementa(valor,cantidad): valor=valor+cantidad return valor >>> val=10 >>> val=Incrementa(val,100) >>> print val 110 >>>    
  • 39. 2.5 Funciones (IV) Paso de parámetros *args y **kwargs:  def ImprimeLista (propietario,*lista): def varios(p1, **otros): print ”Tengo una lista de ”+propietario print ”p1 vale ”+str(p1) for elemento in lista: for i in otros.items(): lista print elemento print i >>> varios(quot;algoquot;,uno=quot;dosquot;,dos=3) >>>ImprimeLista(quot;Camareroquot;,quot;Bravasquot;,quot;Sepiaquot;) p1 valealgo Tengo una lista de Camarero ('dos', 3) Bravas ('uno', 'dos') Sepia >>>    
  • 40. 2.6 Excepciones Una excepción se lanza cuando ha ocurrido algún error que Python   no ”sabe” como manejar, y termina el programa: def division(a,b): c=(a/b) return c >>> division(10/0) Traceback (most recent call last): La excepción, y su File quot;<stdin>quot;, line 1, in <module> explicación ZeroDivisionError: integer division or modulo by zero >>> try: Excepción a capturar ... division(10,0) try: ... except ZeroDivisionError: division(10,0) ... print quot;No se puede dividir por ceroquot; ... except: except ZeroDivisionError: ... print quot;Error inesperadoquot; print ”No se puede dividir por cero” ... finally: except: ... print division(10,1) ... print ”Error inesperado” No se puede dividir por cero finally: 10 print division(10,1)    
  • 41.    
  • 43. 3.1 Módulos y paquetes Módulo: Conjunto de funciones, clases y variables guardadas en un fichero .py  Paquete: Colección de módulos situados en un mismo directorio.   Para que un directorio sea reconocido como paquete es necesario que éste   contenga un fichero de nombre __init__.py que puede estar vacío.  Un paquete puede contener subpaquetes (subdirectorios, cada uno con su   __init__.py) # fichero funciones.py def saludar (nombre): La diferencia entre print ”Hola ”+nombre from paquete import * e import * está en el espacio de nombres. def sumar (a,b): return (a+b) # paquete.py >>> import math def algo(): >>> print math.cos(0) #intérprete Print ”algo” 1.0 >>> from funciones import * >>> saludar(”Andrés”) import paquete Hola Andrés paquete.algo() -------------------------------------------------------- >>> res=sumar(1+3) from paquete import * / algo: >>> print res algo() 4    
  • 44. 3.2 La librería estándar (I) Python tiene una amplia librería estándar   implementada para casi todas las plataformas y  sistemas operativos con muchísimos módulos  útiles. Sistemas operativos:  sys y os  Bases de datos:  Pysqlite3, MySQLdb  Redes:  httplib,socket,urllib,xmlrpc,soap ...     
  • 45. 3.2 La librería estándar (II) Hay muchos tipos de módulos para hacer casi   cualquier cosa: Procesamiento de texto, redes, bases de datos,   sistemas operativos, cálculos complejos, gráficos,  interfaces gŕaficas, páginas web, comunicaciones  bluetooth … Consultar Python Standard Library:  http://effbot.org/librarybook/  Consultar PyDoc:  http://pydoc.org     
  • 46. 3.2 La librería estándar (III) Instalar un paquete es fácil:  Lo compilamos e instalamos nosotros mismos  cd paquete python setup.py build sudo python setup.py install Python se encarga de hacerlo:  sudo easy_install nombre_paquete    
  • 47.    
  • 50. 4.1 Libros sobre Python (II) Libros esenciales:  Programming Python  Learning Python  Python Standard Library  Introducción a la programación Python y C vol I  Python in a Nutshell  Python for Dummies  Python Cookbook  Dive into Python  Programming like a scientist with Python     
  • 51. 4.2 Recursos online (I) Para iniciarse:  Introducción a la programación con Python y C   volumen I, Python (Universitat Jaume I): http://marmota.act.uji.es/ii04/teoria.shtml  Python para todos, Raúl González Duque:  http://mundogeek.net  Dive into Python:  http://diveintopython.org/  Charla  ”Python avanzado” de Polinux:  http://www.polinux.upv.es     
  • 52. 4.2 Recursos online (II) General:  Página web oficial de Python  http://www.python.org  Effbot (página web de Fredrik Lundh)  http://effbot.org  Lista python­es en Aditel  http://listas.aditel.org/archivos/python­es     
  • 53.    
  • 54. ¿Alguna pregunta o duda?  ¡Gracias por vuestra atención! Andrés Ignacio Martínez Soto  http://www.andresmartinezsoto.es  anmarso4@fiv.upv.es     
  • 55. FIN END OF  PRESENTATION