Introducción a Python

Operadores

The Python interpreter can be used to evaluate expressions, for example simple arithmetic expressions. If you enter such expressions at the prompt (>>>) they will be evaluated and the result will be returned on the next line.


In [ ]:
1+1

In [ ]:
1 and 1

Cadenas de texto

The Python interpreter can be used to evaluate expressions, for example simple arithmetic expressions. If you enter such expressions at the prompt (>>>) they will be evaluated and the result will be returned on the next line.


In [ ]:
'artificial' + "intelligence"

In [ ]:
'artificial'.upper()

In [ ]:
s='hello world'
len(s.upper())

In [ ]:
help(s.find)

Estructuras complejas

Listas


In [ ]:
fruits = ['apple','orange','pear','banana']
fruits[0]

In [ ]:
otherFruits = ['kiwi','strawberry']
fruits+otherFruits

In [ ]:
fruits[0:2]

In [ ]:
fruits[:3]

In [ ]:
fruits[2:]

In [ ]:
len(fruits)

Listas de listas


In [ ]:
lstOfLsts = [['a','b','c'],[1,2,3],['one','two','three']] 
lstOfLsts

In [ ]:
lstOfLsts[2][2]

Ejercicio:

Dada esta lista:


In [ ]:
lst = ['a','b','c']

Invertir el orden (c,b,a)


In [ ]:
print 'Ayuda'
dir(list)

In [ ]:

Tuples


In [ ]:
pair = (3,5)
pair(0)

In [ ]:
x,y=pair

Ejercicio:

Imprimir en pantalla el valor de x e y como "x=3 e y=5"


In [ ]:

Sets

Un set es otro tipo de estructura de tipo lista no ordenada con elementos no duplicados


In [ ]:
shapes = ['circulo','cuadrado','triangulo','circulo']
shapes

In [ ]:
'rombo' in setOfShapes

Diccionarios


In [ ]:
studentIds = {'knuth': 42.0, 'turing': 56.0, 'nash': 92.0 }
studentIds['turing']

Matlab

Cuando importamos un .mat desde Matlab, los datos vienen en un diccionario. ¿Cómo importamos de matlab? Usamos scipy, y su paquete "io" para usar la función loadmat


In [ ]:
import scipy.io as io
data=io.loadmat('MLPData.mat',squeeze_me=True)

Analiza los datos que recibimos en "data" (utiliza la función shape del tipo de datos ndarray)


In [ ]:

Bucles


In [ ]:
fruits = ['apples','oranges','pears','bananas']
for fruit in fruits:
    print fruit + ' for sale'

In [ ]:
fruitPrices = {'apples': 2.00, 'oranges': 1.50, 'pears': 1.75}
for fruit, price in fruitPrices.items():
    if price < 2.00:
        print '%s cost %f a pound' % (fruit, price)
    else:
        print fruit + ' are too expensive!'

Lambda

Lo primero que aprenderemos es la función map

  map(function, iterable, ...)

  Aplica una función cualquiera (function) a un conjunto de datos (iterable).
  La función la podemos crear de cualquier forma, pero una de ellas sería utilizando una función lambda:

In [ ]:
x=lambda x: x*x

In [ ]:
y=lambda x: x>3

Ejemplos:


In [ ]:
map(x,[1,2,3])

In [ ]:
map(y, [1,2,3,4,5,4,3,2,1])

Y usando la función filter: filter(function, iterable)

Construct a list from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If iterable is a string or a tuple, the result also has that type; otherwise it is always a list. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.

In [ ]:
filter(y, [1,2,3,4,5,4,3,2,1])

Más tipos de bucles


In [ ]:
for index in range(3):
    print lst[index]

Ejercicio:

Calcular los números primos entre 2 y 50: Consejo: Comprobamos que el número es igual a uno de los números del 2 al 7, o tiene resto distinto de cero con estos números.


In [ ]:
nums = range(2, 50) 
for i in range(2, 8): 
    nums = filter(lambda x: ..., nums)

print nums

Clases

Antes de comenzar con las clases aprenderemos como trabajar con funciones.

Funciones

Una función se define con el calificativo "def".

Por ejemplo, queremos hacer una función que nos devuelva el mayor de dos parámetros de entrada:


In [ ]:
def mayor(param1, param2):
    if (param1>param2)
        return param1;
    else
        return param2;

In [ ]:
pares = range(2,20,2)
impares = range(1,19,2)
impares.reverse()
for index in pares:
    nums=map(mayor,pares,impares)

nums

Y a partir de aquí podemos pasar a estudiar cómo crear una clase

Vamos a hacer una pequeña clase Mascota:


In [ ]:
class Mascota:
    
    def __init__(self,name):
        #Este es el constructor
        self.name=name
        self.__vivo=True
        self.edad=0
        
    def getNombre(self):
        print self.name
        
    def setEdad(self,edad):
        self.edad=edad
        
    def estado(self):
        print self.__vivo
        
    def loMatamos(self):
        self.edad=0
        self.__vivo=False
        self.name=self.name + " - DEP"
    
m1 = Mascota('Milú')
m1.setEdad(1)
m1.edad
m1.loMatamos()
m1.getNombre()

Y la herencia?


In [ ]:
class Culebra(Mascota):
    def setMetros(self,largo):
        self.metros = largo
    
    def getMetros(self):
        print repr(self.metros)
        
m2 = Culebra("Lola")
m2.setMetros(20)
m2.getMetros()

Ejercicio:

Crear dos clases nuevas (Bateria y Guitarra) que heredan las funciones y variables de la clase Instrumento.

  • Bateria: Hacer un nuevo método que imprima "esto es una batería y Estamos tocando música". Usar el método tocar de la clase Instrumento para componer la cadena de salida.
  • Guitarra: Crear un nuevo constructor para indicarle el número de cuerdas, y se debe crear una función que devuelva el número de cuerdas.

In [ ]:
class Instrumento:
    def __init__(self, precio):
        self.precio = precio
 
    def tocar(self):
        print "Estamos tocando musica"
 
    def romper(self):
        print "Eso lo pagas tu"
        print "Son", self.precio, "€"
 
class Bateria(Instrumento):

class Guitarra(Instrumento):