Computación Aplicada Unidad 4 s1 2023

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 55

Computación Aplicada

Unidad 4: Cadenas de Caracteres y Listas


Ingeniería en Proyectos de Ingeniería
Profesor: Gabriel Jara
[email protected]
Primer Semestre 2023
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios

2
Tipos y estructuras de datos
NO CONFUNDIR CON: Estructura de Control (Algorítmico)
Estructura Secuencial Estructura Condicional Estructura Repetitiva

3
Tipos de datos
• Números enteros int()
• Números reales float()
• Números complejos j
• Valores lógicos bool()
• Texto “” ‘’
• Nulo None

4
Asignación
Si tenemos una
observación,
proveniente de la
realidad, podemos
almacenar ese valor
con el tipo adecuado
de dato.

5
Asignación
Un número entero,
por ejemplo, lo
guardamos como int.
La asignación
consiste en colgarle
un nombre con el
que podemos
referirnos a ese
número, a lo largo de
nuestro programa.
6
Asignación
Una asignación consta de: my_int = 103204934813
• Nombre de variable
• Operador de
asignación (=)
• Objeto al que se está
asignando nombre.

7
Estructuras de datos
¿Pero qué hacemos si
tenemos muchas
observaciones?
Podríamos asignar
nombre a cada una,
pero luego el
problema sería
recordar a qué valor
corresponde cada
variable.
8
Tipos y estructuras de datos
Estructuras de dato:
• Listas
• Tuplas 1
2
>>> a = [1, 2]
>>> b = [1.5, 2, a]
3 >>> b
• Sets 4 [1.5, 2, [1, 2]]

• Strings Las listas son mutables


• Diccionarios

9
Tipos y estructuras de datos
Estructuras de dato:
• Listas
• Tuplas 1 >>> a = (1, 2, 3)
2 >>> a[0]
• Sets 3 1

• Strings Las tuplas son


inmutables
• Diccionarios

10
Tipos y estructuras de datos
Estructuras de dato:
• Listas CONJUNTOS

• Tuplas 1 >>> x = set([3, 1, 2, 1])

• Sets 2 set([1, 2, 3])

• Strings Los sets son mutables

• Diccionarios

11
Tipos y estructuras de datos
Estructuras de dato:
• Listas CADENAS DE CARACTERES,
TEXTO

• Tuplas 1 >>> len("abrakadabra")


• Sets 2 11
Los strings son
• Strings inmutables
• Diccionarios

12
Tipos y estructuras de datos
Estructuras de dato: 1
2
>>> a = {'x': 1, 'y': 2, 'z': 3}
>>> a['x']
• Listas 3
4
1
>>> a['z']

• Tuplas 5
6
3
>>> b = {}

• Sets
7 >>> b['x'] = 2
8 >>> b[2] = 'foo'
9 >>> b[(1, 2)] = 3
• Strings 1
0
>>> b
{(1, 2): 3, 'x': 2, 2: 'foo'}
• Diccionarios 1
1

Los diccionarios son


mutables

13
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios

14
Caracteres en Cadena
La metáfora detrás de los
strings es una cadena de
caracteres, cada uno ocupando
una posición.

La primera posición lleva el


índice 0, y de ahí va subiendo
de uno en uno. Así, cada
carácter es “llamable” en
forma individual, o como parte
de la cadena.
15
Caracteres en Cadena

Un string se declara con


comillas simples o dobles.

La llamada a cada elemento


de la cadena se realiza
usando el nombre del
string, seguido de
paréntesis corchete con el
número de índice.
16
Operadores de Texto (algunos)

Los operadores + y * tienen


una interpretación distinta
cuando sus operandos son
de tipo string. Se denominan
concatenación y repetición,
respectivamente.

17
Operadores de Texto
Otra función disponible para
strings es len(). Devuelve el
largo de la cadena, contando
todos sus elementos.

La operación in recibe dos


parámetros, un carácter (o
string) y un string. Verifica si
el primero está contenido en
el segundo.

18
Operadores de Texto

Otra operación disponible para


strings¿Qué
es len(). Devuelve
pasaría si el
largo de la cadena, contando
todoscombinamos
sus elementos.el
operador lógico
not con
La operación el dos
in recibe
parámetros, un carácter
operador in? (o
string) y un string. Verifica si el
primero está contenido en el
segundo.
19
Operadores de Texto
También hay operaciones para
transformar los textos. Es el caso
de upper() y lower().

Nótese que, aunque estas


operaciones devuelven el texto
modificado, el texto original no ha
sufrido cambio y sigue pudiendo
ser llamado con el nombre que se
le asignó. Esto es porque los string
son inmutables.
20
Operadores de Texto
Operadores de relación
también permite comparar
texto. Es más menos claro
como interpretar == y != ,
que comparan si un string es
o no igual a otro.

¿Pero qué significa que un


string sea mayor o menor
que otro string?

21
Operadores de Texto

Las operaciones de relación


entre textos refleja el
orden lexicográfico.
Es el equivalente
computacional al orden
alfabético, y en general
coinciden (pero ojo con las
mayúsculas/minúsculas).

22
Caracteres Especiales
Python reconoce algunos
caracteres como especiales. No
los imprime directo, sino que los
interpreta.

Por ejemplo, comillas y comillas


dobles significan que lo que hay
dentro es un string.

Tres comillas simples permiten


crear un string con saltos de línea.

23
Caracteres Especiales
Dentro de un string, el símbolo \ se usa para construir otros
caracteres especiales, que en lugar de ser impreso son interpretados.

\’ y \″ permiten imprimir comillas.

24
Caracteres Especiales
\n y \t permiten agregar saltos de línea y tabulación
respectivamente.

\\ imprime un \.

25
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios

26
Listas
Las listas son exactamente lo
que su nombre describe.

Es una colección ordenada de


elementos, pudiendo ser estos
de cualquier tipo.

Se delimita con paréntesis de


corchete [ ], Python siempre
asume que el contenido de
estos paréntesis es una lista.

27
Tipos de Datos en Lista

La gracia de las listas es que reciben y guardan


lo que sea. Eso incluye otras listas.

La lista más corta es la lista vacía.

28
Índice de Listas
El llamado a
elementos de una
lista funciona similar
a llamar caracteres
en un string, se
utiliza la numeración
del índice, que
define la posición del
elemento en la lista.

29
Índice de Listas
Para acceder a un segmento
de la lista se ocupa el operador
: para indicar un rango de
índices, el cual se conoce
como slice (trozo). Recibe el
índice limite inferior (incluido
en el resultado) y el índice
límite superior (no incluido en
el resultado).
Si uno de los límites está vacío,
asume que es el extremo
correspondiente de la lista.

30
Índice de Listas
Podemos modificar los
elementos de una lista,
directamente
asignando valores a la
lista con el índice
correspondiente. Pero
esto sólo opera dentro
del rango de índices
que la lista ya tiene.

31
Índice de Listas
También se
puede obtener
un slice usando
índices
negativos, es
decir de atrás
para adelante. Es
útil para obtener
los últimos
elementos en
ingresar a la lista.

32
Índice de Listas dentro de Listas
¿Cómo
manipulamos los
elementos de una
lista que a su vez es
elemento de otra
lista? Usamos el
mismo sistema de
índice con
paréntesis de
corchete, solamente
debemos
acumularlos.

33
Operadores de Lista
Los operadores + y * es decir
Concatenas y Repetir, tienen
un funcionamiento similar en
listas que en strings.

La función len() también


sirve, análogamente que con
strings, para contar los
elementos en la lista.

34
Operadores de Lista
El constructor list() genera listas
con lo que se le entregue. Se
puede usar range() para
entregarle un rango. También
usar con un string para construir
una lista con los caracteres.
range() por sí solo no sería
suficiente para listar los números
del rango, dado que el rango es
un objeto distinto que la lista
que se forma con dicho rango.

35
Operadores de Lista
Para encontrar un elemento
en una lista podemos usar
index(), que devuelve la
posición de la primera
coincidencia en la lista.
Para contar las ocurrencias
de un elemento en una lista
usamos count().

36
Operadores de Lista
Para remover un
elemento de una
lista podemos usar
remove(), pero
CUIDADO, va a
remover solamente
la primera
coincidencia del
elemento en la lista.
37
Operadores de Lista
Usamos sort() para ordenar
la lista. Usamos reverse()
para invertir el orden de la
lista.

A diferencia de lo que
ocurría con los string, estas
operaciones están
ocurriendo sobre la misma
lista, sin guardar el orden
original. Esto es porque las
listas son mutables.
38
Operadores de Lista
Podemos usar append()
para agregar elementos
al final de una lista.
Nuevamente, el cambio
está ocurriendo sobre la
misma lista, así que no
queda guardada la
versión original.
39
Operadores de Lista
Para borrar elementos
de una lista podemos
usar el comando del
indicando el índice del
elemento que se debe
eliminar.
El comando del no es
una operación de lista
exclusivamente, sirve
para borrar cualquier
objeto en Python.

40
Operadores de Lista
sum() suma los elementos
de una lista, que tienen
que ser numéricos.

min() y max() encuentran


el mínimo y el máximo de
una lista. Puede usar
orden lexicográfico.

41
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios

42
Iterar sobre un string
Ya sabemos que
podemos llamar cada
carácter de un string.
¿Puede llamar un slice?
Sí, puede.
¿Puede usar índices
negativos? Sí, puede.
¿Puede iterar sobre cada
carácter por separado?

43
Iterar sobre un string
Nombre Nombre
Por variable del texto
para cada en que se va a
cada elemento iterar.

44
Iterar sobre una lista
El mismo código
sirve para iterar
sobre los elementos
de una lista.

Note que número y


lista son nombres
arbitrarios. for e in
son palabras clave
de Python.

45
Iterar sobre una lista
Caso típico es
seleccionar
elementos de
una lista que
cumplen alguna
condición, y
guardarlos en
otra lista.

46
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios

47
Mutabilidad
Ya se dijo que los strings son inmutables,
mientras que las listas son mutables.
¿Qué consecuencias prácticas tiene eso?

48
Mutabilidad
Ejemplo 1: Recibe un string que necesita guardar
como viene, pero además tiene que usarlo en
mayúsculas en algunas ocasiones.

¿Cómo lo hace?

49
Mutabilidad
Ejemplo 2: Recibe una lista que necesita guardar
como viene, pero además tiene que usarla
ordenada en algunas ocasiones.

¿Cómo lo hace?

Podemos reciclar la idea el ejemplo anterior…


pero no va a resultar 

50
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios

51
¿Qué se imprime?

Observe el siguiente código en Python:

a=[100,20]
b=a
b[1]=50
print(a)

¿Qué resultado espera que se imprima en pantalla?

52
El robot flojo
Recibe como entrada un string con las letras “n”, “s”, “o” y “e”, que le
ordenan moverse, respectivamente, un metro hacia el norte, el sur, el
oeste y el este. En vez de obedecer ciegamente, tiene la capacidad de
optimizar la ruta, de modo de llegar al mismo destino siguiendo el
camino mas corto posible a lo largo de la grilla.
Escriba un programa que reciba como entrada la ruta original
entregada al robot, y que muestre como salida la ruta optimizada:
Ejemplo:
• Ruta: neeesesoonnnossss
• Ruta optimizada: sse
Pudo ser: ess o ses.

53
Lista del Supermercado
Su mamá le manda al supermercado con una lista de
compras y una lista de precios del supermercado (ver
ejemplos). Además, le entrega una cantidad de
dinero. Usted se puede quedar con la mitad del
vuelto. Diseñe y desarrolle el algoritmo que calcule su
comisión o indique la cantidad de dinero que le falta
para poder comprar toda la lista.
compras = [("arroz" ,2) ,("aceite" ,1) ,("jugo" ,3) ,...]
precios = [("arroz" ,850) , ("tomate" ,100) , ("pasta" ,550) ,
("aceite" ,960) ,...]
54
Computación Aplicada
Ingeniería en Proyectos de Ingeniería
Profesor: Gabriel Jara
[email protected]
Primer Semestre 2023

También podría gustarte