Embedded Systems Python
Embedded Systems Python
Embedded Systems Python
Python
Objetivo
Conocer el lenguaje de programacin
PYTHON, sus reas de aplicacin, sintaxis y
los mdulos que le permiten interaccionar
con otros lenguajes y libreras.
Python es un lenguaje scripting de muy alto nivel (VHLPL very high level
programming language), interpretado, interactivo con poderosas instrucciones y
orientado a objectos.
Python se interpreta
Python es interactivo
Python esta orientado a la programacin de Objectos
Python es muy sencillo de aprender (Beginner's Language)
http://www.python.org/
3
Por que Python?
Es un ToolKit que maneja un lenguaje natural
Fcil de usar; interprete (no necesita compilacin)
Todo el procesamiento es simblico
Tipos de datos especiales para cadenas, listas,
diccionarios, etc.
Interfaces para Java o C++ con clases especial para ellas.
Procesamiento avanzado:
Estadstica, Inteligencia artificial, etc.
Python posee capacidades de procesamiento matemtico muy
extensas: e.g. operaciones entre arreglos y matrices, etc.
Muy til para procesamiento de datos probabilsticos y de
algoritmos de aprendizaje de mquina (machine learning).
Usos de Python
Prototyping
Glue language
Desarrollo pginas Web
Administracin de sistemas
Aplicaciones Desktop
Juegos
Tutoriales de Python
13 >>> a = "tres"
14 >>> b = "8"
15 >>> sum = "11"
>>> print "La suma de " + a + " y " + b + " es " + sum
La suma de tres y 8 es 11
Impresin a terminal en Python
El operador % en conjunto con la instruccin print formatea la
cadena string para generar la salida de texto en la terminal.
>>> print %s xyz %d % (abc, 34)
abc xyz 34
>>> y = 3
>>> y
3
Regulaciones de nombres de variables
Los nombres de variables en Python distinguen entre
maysculas y minsculas. Pueden contener nmeros y
guiones bajos (pero no deben comenzar con un nmero).
Cadenas Strings
Se usan comillas dobles o simples para especificarlos. abc abc
Emplear comillas triples para cadenas multi-linea o cadenas que contengan o (
e.g.: abc )
Booleanos
True / False
or / and
Interpretacin de Tipos types bsicos
Python determina en un programa o en la lnea de comando de manera
automtica. Dynamic Typing
Pero Python verifica que los Tipos types sean consistentes de acuerdo a la
declaracin de las variables, siendo obligatorio su cumplimiento. Strong Typing
Cadena vaca
>>> s1 = ''
Tamao len()
>>> s2 = 'UDESC'
>>> len(s2)
5
Concatenar +
>>> 'DCC/' + s2
'DCC/UDESC'
Replicar *
>>> 3*s2
'UDESCUDESCUDESC'
Tipos types en Python / Strings
Slicing - string[inicio:final:paso]
>>> palabra = 'UDESC' (+)
1 >>> palabra[2]
UDESC
'E' 0 1 2 3 4
2 >>> palabra[0:3]
(-)
'UDE'
3 >>> palabra[3:]
'SC'
4 >>> palabra[-1]
'C'
5 >>> palabra[-2:]
'SC'
6 >>> palabra[::2]
'UEC'
7 >>> palabra[::-1]
'CSEDU'
Tipos types en Python / Strings
Transformacion en string str(objeto)
>>> complejo = 2.5-1.0j
>>> type(complejo)
<type 'complex'>
>>> texto=str(complejo)
>>> type(texto)
<type 'str'> Cada Tipo puede tener diversas
>>> complejo funciones integradas
(2.5-1j) >>> Hola.upper()
'HOLA'
>>> texto
>>> Hola.lower()
'(2.5-1j)'
'hola'
Tipos types en Python / Listas
La definicin de una lista se hace mediante [ ]
1 >>> lista = [ ] # lista
2 >>> lista = [10, 20, 'aa', 'bb', 8.5] # definicin
3 >>> print lista
[10, 20, 'aa', 'bb', 8.5]
4 >>> lista[2:4] # slicing
['aa', 'bb']
5 >>> lista[:3] + [30, 40, 10*5] # concatenacin
[10, 20, 'aa', 30, 40, 50]
6 >>> 3*lista[-2:] + ['cc'] # copia y concatenacin
['bb', 8.5, 'bb', 8.5, 'bb', 8.5, 'cc']
7 >>> del lista[2] # borra un elemento de la lista
8 >>> del lista # borra toda la variable
Tipos types en Python / Listas
Alteracin, remocin e insercin
1 >>> lista = [10, 20, 'aa', 'bb', 8.5]
2 >>> lista[1] = lista[1] + 5 # modificacin individual
>>> lista
[10, 25, 'aa', 'bb', 8.5]
3 >>> lista[2:4] = [30, 40] # modificacin de varios elementos
>>> lista
[10, 25, 30, 40, 8.5]
4 >>> lista[0:2] = [ ] # remocin de varios elementos
>>> lista
[30, 40, 8.5]
5 >>> lista[1:1] = [100, 200] # insercin de elementos
>>> lista
[30, 100, 200, 40, 8.5]
6 >>> lista.append(2.5) # mtodo append( )
>>> lista
[30, 100, 200, 40, 8.5, 2.5]
Tipos types en Python / Tuples
La definicin de Tuples se realiza mediante la asignacin de elementos
separados por comas , / se pueden agrupar usando parntesis ( )
5 >>> v = ([1, 2, 3], [3, 2, 1]) # Pero pueden contener objetos mutables
>>> v
([1, 2, 3], [3, 2, 1])
Tipos types en Python / Tuples
Colecciones
Dictionary (or hash or map)
{123:mi casa, 234:casa de pepito}
Set
set('hola')
Otros types
unicode, buffer, xrange, frozenset, file
Tipos types en Python / Diccionarios
Asignacin variable = 10
y = abs( x )
z = complex( r, i )
Operaciones comunes
+= -= *= /= %= **= //=
No soportadas ++ y - -
Asignaciones y comparaciones
Asignacin =
>>> valor = 9.5
>>> a, b, c = 10, 20, 30
>>> x = y = 100
Igualdad == y diferencia !=
>>> x = 5
1 >>> prueba = x == 5
>>> print prueba
True
2 >>> prueba = x != 5
>>> print prueba
False
Errores y excepciones
Errores
ZeroDivisionError
NameError
TypeError
Excepciones
def division_segura(a,b):
try:
return a / b
except ZeroDivisionError:
print "Error: division por cero!"
except:
print "Error inesperado..."
return None
Operadores de comparacin
Operadores relacionales
< > <= >= == !=
if valor < 0:
print ' el valor es negativo'
elif valor == 0:
print 'el valor es cero'
else:
print 'el valor es positivo'
Operadores de comparacin (cont.)
if str1 == str2 :
print "El string es igual !!"
else :
print "El string es diferente!!"
Operadores de comparacin (cont.)
name1 = "Smith, John";
name2 = "Smith, Jane";
if "Smith" in name1 :
print name1
Operadores lgicos
Operadores lgicos
or
and
Ejemplos
>>> x = 15
>>> prueba = x < 5 or (x > 10 and x <= 20)
>>> print prueba
True
>>> prueba = x < 5 or 10 < x <= 20
>>> print prueba
True
Operador None
while True:
pass # Busy-wait for keyboard interrupt (Ctrl+C)
Ciclos for
a = ['Mary', 'had', 'a', 'little', 'lamb']
for <loop-var> in <object> :
for i in range(len(a)):
<statement-block>
print i, a[i]
0 Mary
for i in xrange( 2, 20 ) :
1 had
print i
2a
3 little
for i in xrange( 20, 0, -2 ) :
4 lamb
print i
break break
else:
else:
print n, 'es numero primo'
print n, 'es numero primo'
def initlog(*args):
pass # Remember to implement this!
Funciones Valores por default
def sumRange2( primero, ultimo, step = 1 ) :
total = 0
i = primero
while i <= ultimo :
total = total + i
i = i + step
return total
>>> figura('elipse',altura=50)
Nombre de la figura: elipse
Colores: borde=negro, fondo=blanco
Dimensiones: alto=50, largo=10
Funciones, conjuntos de parmetros
def mi_rutina(a, *parametros, **palabras_clave):
for p in parametros:
print p , # Notar la coma al final de la instruccin
print a
codigos = palabras_clave.keys()
for c in codigos:
print c, ':', palabras_clave[c]
mi_rutina('abc',10,20,30,x='aaa',y='bbb',z='ccc')
10 20 30 abc
y : bbb
x : aaa
z : ccc
mi_rutina('abc', 10, 15, 18, 20, 30, x='aaa', y='bbb', z='ccc', w='fff')
Definicin de funciones con lambda
def incrementa(n):
return lambda x, n=n: x + n # lambda ayuda a crear funciones annimas
>>> f = incrementa(10) # lambda < arguments > : < expresions >
>>> f(0)
10
>>> f(1)
11
class agenda:
def __init__(self, cont=None): # constructor
self.contenido = cont or [ ]
def adicionar(self, nombre): # funcin append
self.contenido.append(nombre)
>>> a = agenda()
>>> a.adicionar('Fulano')
>>> a.adicionar('Sutano')
>>> a.contenido
['Fulano', 'Sutano']
Clases (class): Sobrecarga de operadores
class racional:
def __init__(self, num, den): # constructor
self.num = num
self.den = den
def __str__(self): # funcion _str_
return str(self.num) + '/' + str(self.den)
def __mul__(r1, r2): # funcion _mul_
m = racional(r1.num * r2.num, r1.den * r2.den)
return m
>>> a = racional(1,3)
>>> b = racional(5,2)
>>> c = a * b
>>> print c.num, c.den, c
5 6 5/6
Clases (class): Herencia
Herencia
class NomebreClaseDerivada1(NombreClasseBase):
Herencia mltiple
class NombreClaseDerivada2(Base1, Base2, Base3)
http://docs.python.org/tutorial/classes.html
Lectura y escritura de archivos
>>> f = open( '/tmp/texto.txt', 'r' ) # 'r', 'w', 'a', 'b', 't', '+'
>>> f.readline() # Lee la primera lnea del archivo
'Esto es lo que est dentro del archivo.\n'
>>> f.readline() # Lee la siguiente lnea del archivo
'Esta es la segunda lnea del archivo.\n
>>> f.read(4) # Lee los siguientes 4 caracteres
'Esta'
>>> f.read( ) # Lee el resto del archivo
' es la tercera lnea del archivo.\n'
>>> f.close()
Construccin
from datetime import date, time
today = date( 2006, 8, 25 )
No se requiere el operando new para definir
nuevas instacias.
Mtodos
which_day = today.weekday()
Built-in
Exibicin de atributos dir()
1 >>> dir()
['__builtins__', '__doc__', '__name__']
2 >>> dir(__builtins__) # muestra los mtodos built-ins
Ayuda help( )
>>> help(max)
Help on built-in function max in module __builtin__:
max(...)
max(iterable[, key=func]) -> value
max(a, b, c, ...[, key=func]) -> value
With a single iterable argument, return its largest item.
With two or more arguments, return the largest argument.
Ejemplo de archivo de Python (*.py)
#! /usr/bin/env python
x = 34 - 23 # Primer comentario.
y = Hola # Segundo comentario.
z = 3.45
if z == 3.45 or y == Hola:
x=x+1
y = y + Mundo! # Concatenacin del string
print x
print y
Comentarios en Python
Comience los comentarios con el smbolo de gato # , el resto de la
lnea ser ignorado por el interprete. Recuerde No usar acentos !!!!
Para las operaciones lgicas se usan palabras (and, or, not) no smbolos (&&, ||, !).
Los scripts en Python pueden hacerse ejecutables, como si se tratase de scripts del
shell al incluir en la primera lnea: #! /usr/bin/env python