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

POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosFranklin Parrales Bravo
 
Métodos y Funciones - Java - Algoritmia
Métodos y Funciones - Java - AlgoritmiaMétodos y Funciones - Java - Algoritmia
Métodos y Funciones - Java - AlgoritmiaDaniel Gómez
 
Presentacion Pseint
Presentacion PseintPresentacion Pseint
Presentacion Pseintegalindo1104
 
Metodos de entrada y Salida
Metodos de entrada y SalidaMetodos de entrada y Salida
Metodos de entrada y SalidaCristian Andres
 
Curso Java Avanzado 0 Conceptos Basicos
Curso Java Avanzado   0 Conceptos BasicosCurso Java Avanzado   0 Conceptos Basicos
Curso Java Avanzado 0 Conceptos BasicosEmilio Aviles Avila
 
Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Milton Nicolay
 
Programación C++
Programación C++Programación C++
Programación C++Juan Islas
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosMario Villaseñor
 
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfDIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfJuanPatricioLemaChil
 
Trabajo de python
Trabajo de pythonTrabajo de python
Trabajo de pythonEdgar Lemus
 
Logica de la Programación Problemas y Soluciones
Logica de la  Programación  Problemas y SolucionesLogica de la  Programación  Problemas y Soluciones
Logica de la Programación Problemas y SolucionesVideoconferencias UTPL
 
Seguridad de la base de datos
Seguridad de la base de datosSeguridad de la base de datos
Seguridad de la base de datososandcr
 
Lenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacionLenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacionClaudia Poza
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigoBrivé Soluciones
 
10 preguntas interesantes sobre el software libre - KZgunea
10 preguntas interesantes sobre el software libre - KZgunea10 preguntas interesantes sobre el software libre - KZgunea
10 preguntas interesantes sobre el software libre - KZguneaSoftware Askea / Libre Euskadin
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansEmerson Garay
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansEmerson Garay
 

La actualidad más candente (20)

POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
Pseint
PseintPseint
Pseint
 
Métodos y Funciones - Java - Algoritmia
Métodos y Funciones - Java - AlgoritmiaMétodos y Funciones - Java - Algoritmia
Métodos y Funciones - Java - Algoritmia
 
Presentacion Pseint
Presentacion PseintPresentacion Pseint
Presentacion Pseint
 
Metodos de entrada y Salida
Metodos de entrada y SalidaMetodos de entrada y Salida
Metodos de entrada y Salida
 
Curso Java Avanzado 0 Conceptos Basicos
Curso Java Avanzado   0 Conceptos BasicosCurso Java Avanzado   0 Conceptos Basicos
Curso Java Avanzado 0 Conceptos Basicos
 
Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Fundamentos de programación librería string C++
Fundamentos de programación librería string C++
 
Programación C++
Programación C++Programación C++
Programación C++
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfDIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
 
Trabajo de python
Trabajo de pythonTrabajo de python
Trabajo de python
 
Logica de la Programación Problemas y Soluciones
Logica de la  Programación  Problemas y SolucionesLogica de la  Programación  Problemas y Soluciones
Logica de la Programación Problemas y Soluciones
 
Seguridad de la base de datos
Seguridad de la base de datosSeguridad de la base de datos
Seguridad de la base de datos
 
Lenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacionLenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacion
 
Cuestionario de java
Cuestionario de javaCuestionario de java
Cuestionario de java
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo
 
10 preguntas interesantes sobre el software libre - KZgunea
10 preguntas interesantes sobre el software libre - KZgunea10 preguntas interesantes sobre el software libre - KZgunea
10 preguntas interesantes sobre el software libre - KZgunea
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeans
 
Nagios
NagiosNagios
Nagios
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando Netbeans
 

Similar a Introducción a Python: tipos de datos

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 Introducción a Python: tipos de datos (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

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Último (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

Introducción a Python: tipos de datos

  • 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