2 hoja estructuras simples

14
Departamento Académico de Computación, ITAM otoño 2015 Hoja 2. Estructuras simples: textos, sucesiones, listas y conjuntos 1. Manipulación de textos. Un texto en computación es una cadena de símbolos o caracteres, por ejemplo, una sucesión de letras del alfabeto, números y espacios tecleados. Por ejemplo, el identificador usado por el Servicio de Administración Tributaria (SAT) es un texto estandarizado, el Registro Federal de Contribuyentes (RFC); otros ejemplos son la Clave Única de Registro de Población (CURP) y la Clave Bancaria Estandarizada (CLABE). Considere el siguiente ejemplo hipotético, el RFC de cierto contribuyente, Bernardo Reyes Ogazón, nacido el 20 de agosto de 1949: REOB490820RH1. Como nos han dicho, el RFC se forma con las letras iniciales de los apellidos y nombres, la fecha de nacimiento y una clave de tres letras y números. Para la manipulación del texto en su totalidad o en partes, Python y otros lenguajes de programación utilizan índices cuyos valores son los números naturales, es decir, una sucesión de números enteros que se inicia en cero. Si queremos referirnos a una letra o carácter del texto, usamos un valor del cero al valor (n-1), donde n es la cantidad de símbolos o caracteres que componen el texto. Para indicar el índice, se utilizan los corchetes [ ]. Veamos algunos ejemplos: Si se aplica la función type() a un texto se obtiene str que es el identificador de string:

Upload: independent

Post on 17-Nov-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Departamento Académico de Computación, ITAM otoño 2015

Hoja 2. Estructuras simples: textos, sucesiones, listas y conjuntos

1. Manipulación de textos. Un texto en computación es una cadena de

símbolos o caracteres, por ejemplo, una sucesión de letras del alfabeto,

números y espacios tecleados. Por ejemplo, el identificador usado por el

Servicio de Administración Tributaria (SAT) es un texto estandarizado, el

Registro Federal de Contribuyentes (RFC); otros ejemplos son la Clave Única

de Registro de Población (CURP) y la Clave Bancaria Estandarizada (CLABE).

Considere el siguiente ejemplo hipotético, el RFC de cierto contribuyente,

Bernardo Reyes Ogazón, nacido el 20 de agosto de 1949:

REOB490820RH1.

Como nos han dicho, el RFC se forma con las letras iniciales de los apellidos

y nombres, la fecha de nacimiento y una clave de tres letras y números.

Para la manipulación del texto en su totalidad o en partes, Python y otros

lenguajes de programación utilizan índices cuyos valores son los números

naturales, es decir, una sucesión de números enteros que se inicia en cero.

Si queremos referirnos a una letra o carácter del texto, usamos un valor del

cero al valor (n-1), donde n es la cantidad de símbolos o caracteres que

componen el texto. Para indicar el índice, se utilizan los corchetes [ ].

Veamos algunos ejemplos:

Si se aplica la función type() a un texto se obtiene str que es el identificador

de string:

Departamento Académico de Computación, ITAM otoño 2015

Estos ejemplos muestran dos casos de índices inválidos:

La cantidad de símbolos que componen el texto puede obtenerse con la

función len():

Los corchetes [ ] también pueden usarse para referirse a un segmento del

texto, indicando el inicio, final e incremento de la sucesión de enteros,

separando con dos puntos :,

[ inicio : final: incremento]

Por ejemplo, separemos la parte relacionada con el nombre de la fecha de

nacimiento:

También es posible utilizar una notación abreviada, omitiendo los valores

del índice sin eliminar el signo de dos puntos : . Cuando se omite los

límites y el incremento, se usan los valores obvios (el mínimo, el máximo y

la unidad). Por ejemplo,

Departamento Académico de Computación, ITAM otoño 2015

Cuando se trata de índices negativos para el inicio y final, Python los

interpreta como valores relativos al final del texto. Veamos algunos

ejemplos,

Note que si el valor de inicio es mayor o igual que el valor final para un

incremento de 1, el resultado del texto es el texto nulo, comillas o

apóstrofos vacíos:

Cuando se define un texto, se define cierto objeto sujeto a la acción de

ciertas funciones y métodos predefinidos. A continuación se ilustran

algunos de los métodos para los textos que permiten aplicar ciertas

operaciones:

Departamento Académico de Computación, ITAM otoño 2015

De manera más general, los métodos disponibles para textos pueden ser

listados en un menú contextual desplegado al oprimir el tabulador Tab en

el modo de edición:

Ahora veamos un caso particular con el uso de un operador aritmético

que puede operar sobre textos. El signo de más + permite unir o

concatenar textos:

Departamento Académico de Computación, ITAM otoño 2015

Por último, hagamos notar una característica importante de los textos: los

textos deben tratarse como objetos inmutables (otros ejemplos incluyen

los números y las tuplas, tratadas más adelante). Esto se puede apreciar

en el siguiente ejemplo donde se intenta cambiar una letra de una frase:

Como se muestra, el problema puede ser resuelto creando un nuevo texto

con el cambio, acción que no modifica el texto original.

2. Uso de listas. Python utiliza los corchetes, o “paréntesis cuadrados”, [ ]

para definir listas de objetos, en particular valores textuales y numéricos,

las cuales son agregados de objetos indexados. De manera similar a los

textos, las listas son manejadas por índices. Por ejemplo,

Departamento Académico de Computación, ITAM otoño 2015

Ejercicio. Aplique la función type() a una lista creada y observe el resultado.

Otro ejemplo, que ilustra el alcance de la estructura, con una lista de listas:

Como se muestra en la figura anterior, las listas están sujetas a métodos, de

manera similar a los textos, que permiten transformarlas. Sin embargo, a

diferencia de los textos, las listas son objetos mutables, es decir pueden

cambiar o actualizar sin perder el identificador (guardado en la memoria) que

tienen al ser creados. Otros objetos mutables

3. La función range(). Python permite generar listas de sucesiones de

números enteros que son de utilidad en las aplicaciones con la función

range(). Por ejemplo, escribamos algunas secuencias después de

consultar la forma general de escritura, en la documentación de ayuda, de

la función range():

Departamento Académico de Computación, ITAM otoño 2015

4. Operaciones con listas.

Cuando se crea una lista numérica es posible realizar operaciones simples

como suma y producto de los números, utilizando las funciones sum(),

mean(), prod(). Por ejemplo,

Departamento Académico de Computación, ITAM otoño 2015

Las listas pueden generarse a partir de otras listas empleando operadores

y funciones. Por ejemplo, los operadores aritméticos + y * permiten

juntar y multiplicar listas:

Otro ejemplo,

5. List comprehension. Las listas pueden generarse a partir de una notación

llamada list comprehension que aplica una operación, según cierta

expresión, a cada elemento de una lista. Esta aplicación repetida a cada

elemento de la lista también se denomina iteración. La sintaxis que

debemos aplicar para generar una lista a partir de otra es la siguiente:

nueva lista= [expresión for variable in lista original]

Departamento Académico de Computación, ITAM otoño 2015

Por ejemplo, generemos las potencias enteras de 2 desde 20 a 210. Para

esto usemos una expresión 2n para generar las potencias con la variable

muda n que nos permita referirnos a la potencia y la lista de los números

del 0 al 10:

Como un caso más práctico, podemos calcular el impuesto al valor agregado

(IVA) que debe descontarse de una lista de precios:

Ejercicio: Para las secuencias sugeridas a continuación, genere listas con los 30 primeros valores y asígneles un nombre. Los valores deben mostrarse en notación decimal.

, ...

, ...

,...

Departamento Académico de Computación, ITAM otoño 2015

6. Sucesiones o tuplas. Python utiliza el nombre de tupla para cualquier

sucesión de valores u objetos separados por comas. Las tuplas son

objetos muy básicos y útiles. A continuación se muestran dos ejemplos:

Como muestra en el resultado de la ejecución, al definir tuplas puede

usarse paréntesis (paréntesis curvos). Asimismo, las tuplas son objetos

indexados y, al igual que los textos, son objetos inmutables.

Como objetos muy básicos, las tuplas tienen dos métodos .count() e

.index():

Departamento Académico de Computación, ITAM otoño 2015

Con el fin de ilustrar la relación que existe entre las tuplas y otros objetos,

veamos los siguientes dos ejemplos, aplicando las funciones tuple() y list()

para crear objetos de tipo distinto:

7. Conjuntos. Python permite definir agregados de objetos no ordenados, es

decir, sin un orden impuesto por un índice. Al definir un conjunto se

habilita los métodos que permiten aplicar operaciones de conjuntos,

como la unión, la intersección y la diferencia. Veamos algunos ejemplos,

En un universo de números enteros positivos entre 1 y 50, se definen dos

conjuntos: el los números pares y los múltiplos de tres:

Departamento Académico de Computación, ITAM otoño 2015

A partir de los conjuntos definidos, se obtienen otros conjuntos, aplicando

operaciones de conjuntos:

Una manera muy directa de definir conjuntos consiste agrupar los elementos

con llaves { }, enumerando los elementos como una tupla (separando los

elementos con comas). Por ejemplo,

8. (Tema opcional) Ejemplos de lectura de archivos. Cuando la información

se guarda en archivos, Python permite llevar a cabo las lectura y escritura

de datos. Tratemos dos casos relativamente simples de archivos que

contienen información textual y numérica en un archivo de texto con el

objetivo de crear una lista con la información textual.

Caso 1. Lectura de un archivo con textos. Supongamos que tenemos un

archivo de texto llamado nombres.txt con nombres propios. El inicio del

archivo debería ser como se ilustra a continuación:

Departamento Académico de Computación, ITAM otoño 2015

A continuación se listan instrucciones para abrir el archivo, leer un texto

con la información y cerrar el archivo. Después se manipula el texto para

producir la lista de nombres:

Caso 2. Lectura de un archivo con números. Supongamos que se tiene un

archivo con valores numéricos del tipo de cambio del USD de los días

previos al 15 de agosto de 2015:

Departamento Académico de Computación, ITAM otoño 2015

A continuación se listan instrucciones para abrir el archivo, leer un texto

con la información y cerrar el archivo. Después se manipula el texto para

producir la lista de valores: