El control de la computación 2
día16, 20-feb-15
SPAN 4350
Cultura computacional en español
Harry Howard
Tulane University
Organización del curso
2


http://www.tulane.edu/~howard/Span4350/
http://www.tulane.edu/~howard/CompCultES/
1.
2.
3.
4.
5.
6.
7.
8.
Computación cultural
Python
Cadenas
Unicode
Exreg
Archivos
Listas
Control
CultCompES, Prof. Howard, Tulane University
20-feb-2015
3
Repaso
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Operar sobre todos los elementos:
travesía (traversal) o bucle (loop)
4
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
>>> advertencia = '¡Ojo!'.decode('utf8')
>>> for letra in advertencia:
... print letra
...
¡Ojo con la sangría (indentation)!
¡
O
j
o
!
>>> for letra in advertencia:
... print letra
File "<stdin>", line 2
print letra
^
IndentationError: expected an indented block
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Funciona con listas también
5
1.
>>> from nltk.corpus import PlaintextCorpusReader
2.
>>> texlector = PlaintextCorpusReader('', 'Gitanilla.txt', encoding='utf8')
3.
>>> oracion = texlector.sents()[1]
4.
>>> for palabra in oracion[:5]:
5.
...
6.
...
7.
Parece
8.
que
9.
los
10.
gitanos
11.
y
print palabra
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Práctica
6

1.
2.
3.
4.
5.
Imprime el resultado de añadir el sufijo –ita a las
palabras de la lista de frutas.
>>> fruta = ['pera', 'manzana', 'sandia',
'chirimoya', 'naranja']
>>> for p in fruta:
…
print p[:-1] + 'ita',
…
perita manzanita sandiita chirimoyita naranjita
CultCompES, Prof. Howard, Tulane University
20-feb-2015
7
§8 El control de la computación
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Crear una lista con los resultados
8



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).
CultCompES, Prof. Howard, Tulane University
20-feb-2015
La comprensión de lista
9

Tiene la sintaxis de:



1.
2.


1.
2.
[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'!']
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Operar sobre algunos elementos
10


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,
...
¡Oj!
>>> [c for c in advertencia if c != 'o']
[u'\xa1', u'O', u'j', u'!']
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Un ejemplo con una lista
11
>>> 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']
CultCompES, Prof. Howard, Tulane University
20-feb-2015
12
Las pruebas o funciones condicionales
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Operadores de relación
13
<
menos de
<=
inferior o igual a
==
igual a (es de dos "=", no uno)
!=
no es igual a
>
>=
mayor a
mayor o igual a
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Ejemplos
14
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
>>> 4 < 5
True
>>> len('ab') > len('a')
True
>>> 'ab' > 'a'
True
>>> 'a' == 'a'
True
>>> 'a' != 'a'
False
>>> 'abc' <= 'abc'
True
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Funciones (pruebas) de cadenas
>>> c = 'informatica'
15
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
>>> 'm' in c
True
>>> c.islower()
True
>>> c.isupper()
False
>>> c.isalpha()
True
>>> c.isalnum()
True
11.
12.
13.
14.
15.
16.
17.
18.
>>> c.isdigit()
False
>>> c.istitle()
False
>>> c.startswith('i')
True
>>> c.endswith('a')
True
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Más ejemplos
>>> may = 'BOOM'; num = '0123'; mezcla = 'Ojo!'
16
1.
>>> may.islower()
12.
False
2.
False
13.
>>> mezcla.isupper()
3.
>>> may.istitle()
14.
False
4.
False
15.
>>> mezcla.isalpha()
5.
>>> num.isalpha()
16.
False
6.
False
17.
>>> mezcla.isalnum()
7.
>>> num.isalnum()
18.
False
8.
True
19.
>>> mezcla.istitle()
9.
>>> num.isdigit()
20.
True
10.
True
11.
>>> mezcla.islower()
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Resumen de funciones (pruebas) de cadenas
17
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?
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Condiciones complejas
>>> c = 'informatica'
18
1.
2.
3.
4.
5.
6.
>>> not c.isupper()
True
>>> c.islower() and c.isalpha()
True
>>> c.islower() or c.isupper()
True
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Resumen de condiciones complejas
19

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.
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Práctica
20

1.
2.
3.
4.
5.
6.
7.
Encuentra las palabras de "fruta" que tienen 'y'.
>>> for p in fruta:
... if 'y' in p:
...
print p,
...
chirimoya
>>> [p for p in fruta if 'y' in p]
['chirimoya']
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Otra
21

1.
2.
3.
4.
5.
6.
7.
Encuentra las palabras de "fruta" que tienen 'y' o
'j'.
>>> for p in fruta:
... if 'y' in p or 'j' in p:
...
print p,
...
chirimoya naranja
>>> [p for p in fruta if 'y' in p or 'j' in p]
['chirimoya', 'naranja']
CultCompES, Prof. Howard, Tulane University
20-feb-2015
En Unicode
22

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Encuentra las palabras de "fruta" que tienen 's'.
>>> fruta = ['pera', 'limón', 'sandía', 'chirimoya', 'naranja']
>>> for p in fruta:
... if 's' in p.decode('utf8'):
...
print p,
...
sandía
>>> [p for p in fruta if 's' in p.decode('utf8')]
['sand\xc3\xada']
>>> [p.decode('utf8') for p in fruta if 's' in p]
[u'sand\xeda']
CultCompES, Prof. Howard, Tulane University
20-feb-2015
23
El próximo día
P4?
Más control de la computación
CultCompES, Prof. Howard, Tulane University
20-feb-2015
Descargar

LING 681 Intro to Comp Ling