el control de la computación 2 día16, 20-feb-15 span 4350 cultura computacional en español harry...
TRANSCRIPT
El control de la computación 2día16, 20-feb-15SPAN 4350
Cultura computacional en español
Harry Howard
Tulane University
Organización del curso
20-feb-2015CultCompES, Prof. Howard, Tulane University
2
http://www.tulane.edu/~howard/Span4350/
http://www.tulane.edu/~howard/CompCultES/1. Computación cultural2. Python 3. Cadenas4. Unicode 5. Exreg 6. Archivos 7. Listas8. Control
Repaso
20-feb-2015
3
CultCompES, Prof. Howard, Tulane University
Operar sobre todos los elementos:travesía (traversal) o bucle (loop)
1. >>> advertencia = '¡Ojo!'.decode('utf8')2. >>> for letra in advertencia:3. ... print letra4. ... 5. ¡6. O7. j8. o9. !10. >>> for letra in advertencia:11. ... print letra12. File "<stdin>", line 213. print letra14. ^15. IndentationError: expected an indented block
20-feb-2015CultCompES, Prof. Howard, Tulane University
4
¡Ojo con la sangría (indentation)!
Funciona con listas también
1. >>> from nltk.corpus import PlaintextCorpusReader
2. >>> texlector = PlaintextCorpusReader('', 'Gitanilla.txt', encoding='utf-8')
3. >>> oracion = texlector.sents()[1]
4. >>> for palabra in oracion[:5]:
5. ... print palabra
6. ...
7. Parece
8. que
9. los
10. gitanos
11. y
20-feb-2015CultCompES, Prof. Howard, Tulane University
5
Práctica
Imprime el resultado de añadir el sufijo –ita a las palabras de la lista de frutas.
1.>>> fruta = ['pera', 'manzana', 'sandia', 'chirimoya', 'naranja']
2.>>> for p in fruta:3.… print p[:-1] + 'ita',4.…5.perita manzanita sandiita chirimoyita naranjita
20-feb-2015CultCompES, Prof. Howard, Tulane University
6
§8 El control de la computación
20-feb-2015
7
CultCompES, Prof. Howard, Tulane University
Crear una lista con los resultados Si se imprime el resultado a la pantalla,
no está disponible para un procesamiento posterior.
Por lo tanto, queremos recoger el resultado de una travesía en una lista.
Python tiene un modismo (idiom) para esta tarea, que se llama una comprensión de lista (list comprehension).
20-feb-2015CultCompES, Prof. Howard, Tulane University
8
20-feb-2015CultCompES, Prof. Howard, Tulane University
9
La comprensión de lista
Tiene la sintaxis de: [f(e) for e in fuente] o [e.f for e in fuente] donde f es una función que se aplica a cada elemento e de
la fuente f. Ejemplo: Recoge en una lista el largo las palabras de
"fruta". >>> [len(p) for p in fruta] [4, 7, 6, 9, 7] No se pueden hacer cadenas así, pero una lista de
cadenas, sí. Ejemplo: Recoge en una lista los caracteres en
mayúscula de "advertencia". >>> [c.upper() for c in advertencia] [u'\xa1', u'O', u'J', u'O', u'!']
Operar sobre algunos elementos El paso siguiente es operar sólo sobre
algunos de los elementos. Hay que agregar a la travesía una condición
con "if":>>> for c in advertencia:... if c != 'o':... print c,... ¡ O j !>>> [c for c in advertencia if c != 'o'][u'\xa1', u'O', u'j', u'!']
20-feb-2015CultCompES, Prof. Howard, Tulane University
10
Un ejemplo con una lista
>>> for p in fruta:... if len(p) > 4:... print p,... manzana sandia chirimoya naranja>>> [p for p in fruta if len(p) > 4]['manzana', 'sandia', 'chirimoya', 'naranja']
20-feb-2015CultCompES, Prof. Howard, Tulane University
11
Las pruebas o funciones condicionales
20-feb-2015
12
CultCompES, Prof. Howard, Tulane University
20-feb-2015CultCompES, Prof. Howard, Tulane University
13
Operadores de relación
< menos de
<= inferior o igual a
== igual a (es de dos "=", no uno)
!= no es igual a
> mayor a
>= mayor o igual a
20-feb-2015CultCompES, Prof. Howard, Tulane University
14
Ejemplos
1. >>> 4 < 52. True3. >>> len('ab') > len('a')4. True5. >>> 'ab' > 'a'6. True7. >>> 'a' == 'a'8. True9. >>> 'a' != 'a'10. False11. >>> 'abc' <= 'abc'12. True
Funciones (pruebas) de cadenas>>> c = 'informatica'
20-feb-2015CultCompES, Prof. Howard, Tulane University
15
Más ejemplos>>> may = 'BOOM'; num = '0123'; mezcla = 'Ojo!'
20-feb-2015CultCompES, Prof. Howard, Tulane University
16
20-feb-2015CultCompES, Prof. Howard, Tulane University
17
Resumen de funciones (pruebas) de cadenas
t in c ¿t está en c?
c.islower() ¿los caracteres de c están en minúscula?
c.isupper() ¿los caracteres de c están en mayúscula?
c.isalpha() ¿los caracteres de c son alfabéticos?
c.isalnum() ¿los caracteres de c son alfanuméricos?
c.isdigit() ¿los caracteres de c son números?
c.istitle() ¿c tiene una mayúscula inicial y las demás minúsculas?
c.startswith('t') ¿c se inicia con t?
c.endswith('t') ¿c termina con t?
Condiciones complejas>>> c = 'informatica'
1. >>> not c.isupper()2. True3. >>> c.islower() and c.isalpha()4. True5. >>> c.islower() or c.isupper()6. True
20-feb-2015CultCompES, Prof. Howard, Tulane University
18
20-feb-2015CultCompES, Prof. Howard, Tulane University
19
Resumen de condiciones complejas Si c es una condición,
not c es también una condición. Si hay dos condiciones c1 y c2,
c1 and c2, c1 or c2
son también condiciones.
Práctica
Encuentra las palabras de "fruta" que tienen 'y'.
1.>>> for p in fruta:2.... if 'y' in p:3.... print p,4.... 5.chirimoya6.>>> [p for p in fruta if 'y' in p]7.['chirimoya']
20-feb-2015CultCompES, Prof. Howard, Tulane University
20
Otra
Encuentra las palabras de "fruta" que tienen 'y' o 'j'.
1.>>> for p in fruta:2.... if 'y' in p or 'j' in p:3.... print p,4.... 5.chirimoya naranja6.>>> [p for p in fruta if 'y' in p or 'j' in p]
7.['chirimoya', 'naranja']20-feb-2015CultCompES, Prof. Howard, Tulane University
21
En Unicode
Encuentra las palabras de "fruta" que tienen 's'.1. >>> fruta = ['pera', 'limón', 'sandía', 'chirimoya',
'naranja']2. >>> for p in fruta:3. ... if 's' in p.decode('utf8'):4. ... print p,5. ... 6. sandía7. >>> [p for p in fruta if 's' in p.decode('utf8')]8. ['sand\xc3\xada']9. >>> [p.decode('utf8') for p in fruta if 's' in p]10. [u'sand\xeda']
20-feb-2015CultCompES, Prof. Howard, Tulane University
22
P4?Más control de la computación
El próximo día
20-feb-2015CultCompES, Prof. Howard, Tulane University
23