Computación Aplicada Unidad 4 s1 2023
Computación Aplicada Unidad 4 s1 2023
Computación Aplicada Unidad 4 s1 2023
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]]
9
Tipos y estructuras de datos
Estructuras de dato:
• Listas
• Tuplas 1 >>> a = (1, 2, 3)
2 >>> a[0]
• Sets 3 1
10
Tipos y estructuras de datos
Estructuras de dato:
• Listas CONJUNTOS
• Diccionarios
11
Tipos y estructuras de datos
Estructuras de dato:
• Listas CADENAS DE CARACTERES,
TEXTO
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
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.
17
Operadores de Texto
Otra función disponible para
strings es len(). Devuelve el
largo de la cadena, contando
todos sus elementos.
18
Operadores de Texto
21
Operadores de Texto
22
Caracteres Especiales
Python reconoce algunos
caracteres como especiales. No
los imprime directo, sino que los
interpreta.
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.
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.
27
Tipos de Datos en Lista
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.
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.
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.
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?
50
Temario
• Estructuras de Datos
• Cadena de caracteres (string)
• Lista
• Iteración sobre estructuras
• Mutabilidad
• Ejercicios
51
¿Qué se imprime?
a=[100,20]
b=a
b[1]=50
print(a)
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