Skip to content

Commit d460b74

Browse files
committed
#3 - Python
1 parent 9ede1b2 commit d460b74

File tree

1 file changed

+148
-0
lines changed
  • Roadmap/03 - ESTRUCTURAS DE DATOS/python

1 file changed

+148
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Una estructura de dato es un "contenedor" que permite organizar, almacenar y manipular datos de manera eficiente.
2+
# Tenemos las listas, tuplas, conjuntos, diccionaros, también pilas y colas en collections.
3+
# Esto nos ayuda a organizar datos para optimizar la eficiencia y rendimiento.
4+
# Reduce la complejidad en la manipulación de grande volúmenes de información.
5+
# Facilita el acceso, búsqueda y modificación de los datos de manera efectiva.
6+
7+
# LISTAS (list)
8+
# Almacena colecciones de elementos ordenados y modificables, puede ser cualquier tipo de dato.
9+
10+
mi_lista = [1, 35, "Gato", 7.25, True]
11+
mi_lista2 = [1, 47, 23, 78, 12]
12+
13+
mi_lista.append("Edificio") #Inserta al final
14+
mi_lista.pop() #Elimina el último elemento
15+
mi_lista.insert(2, "Perro") #Inserta en una posición específica
16+
mi_lista[4] = 15 #Actualiza el dato en un índice específico
17+
mi_lista[1:3] = [20, 40] #Reemplaza una porción
18+
mi_lista2.sort() #Ordena en su lugar menor a mayor
19+
nueva_lista = sorted(mi_lista2, reverse=True) #Crea una nueva lista ordenada mayor a menor
20+
21+
print(mi_lista)
22+
print(mi_lista2)
23+
24+
# TUPLAS (tuple)
25+
# Son como las listas, pero INMUTABLES (no pueden modificarse).
26+
# Util para datos que no deben cambiar.
27+
28+
mi_tupla = (10, 70, 20, 50)
29+
mi_tupla = tuple(sorted(mi_tupla)) #Ordena la tupla, pero convirtiendola en otra lista, al decirle tuple, vuelve a convertirla en tupla
30+
31+
print(mi_tupla)
32+
33+
34+
# CONJUNTOS (set)
35+
# Colección NO ordenada de elementos únicos (no hay duplicados).
36+
# Utiles para operaciones de conjuntos como unión, intersección y diferencia.
37+
38+
mi_conjunto = {1, 8, 15, 3, 14, 15}
39+
mi_conjunto.add(4) #Inserta al final
40+
mi_conjunto.add(3) #No se inserta porque es duplicado
41+
mi_conjunto.remove(3) #Elimina el valor nombrado
42+
mi_conjunto.discard(5) #Elimina el valor nombrado, no da error si no existe
43+
mi_conjunto.pop() #Elimina un elemento aleatorio
44+
lista_ordenada = sorted(mi_conjunto) #Ordena, pero convertido en lista, NO SE PUEDE ORDENAR UN SET
45+
46+
print(mi_conjunto)
47+
print(lista_ordenada)
48+
49+
# DICCIONARIOS (dict)
50+
# Almacena pares clave-valor, donde la clave es única y se asocia a un valor.
51+
# Permite acceso rápido a los datos mediante la clave.
52+
53+
mi_diccionario = {"nombre": "Juan", "edad": 30, "ciudad": "Santiago"}
54+
mi_diccionario["comuna"] = "Las Condes" #Inserta una nueva clave-valor
55+
mi_diccionario.pop("edad") #Elimina la clave mencionada
56+
mi_diccionario.popitem() #Elimina un elemento aleatorio
57+
mi_diccionario.clear() #Elimina todos los elementos
58+
mi_diccionario["nombre"] = "Matías" #Actualiza el valor de la clave mencionada
59+
mi_diccionario.update({"ciudad": "Arica", "pais": "Chile"}) #Actualiza y/o agrega datos
60+
61+
print(mi_diccionario)
62+
63+
#En diccionarios se ordena por: claves, valores o pares clave-valor
64+
65+
claves_ordenadas = sorted(mi_diccionario.keys()) #Ordena las claves por orden alfabético
66+
valores_ordenados = sorted(mi_diccionario.values()) #Ordena los valores por orden alfabetico o menor a mayor
67+
items_ordenados = sorted(mi_diccionario.items(), key=lambda x: x[1]) #Ordena pares clave-valor según el valor
68+
69+
print(claves_ordenadas)
70+
print(valores_ordenados)
71+
print(items_ordenados)
72+
73+
74+
"""
75+
DIFICULTAD EXTRA (opcional):
76+
* Crea una agenda de contactos por terminal.
77+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
78+
* - Cada contacto debe tener un nombre y un número de teléfono.
79+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
80+
* los datos necesarios para llevarla a cabo.
81+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
82+
* (o el número de dígitos que quieras)
83+
* - También se debe proponer una operación de finalización del programa.
84+
"""
85+
86+
87+
def contactos():
88+
89+
agenda = {}
90+
91+
while True:
92+
93+
print("")
94+
print("1. Buscar contacto")
95+
print("2. Insertar contacto")
96+
print("3. Actualizar contacto")
97+
print("4. Eliminar contacto")
98+
print("5. Salir")
99+
100+
option = input("Seleccione una opción del 1 al 5: ")
101+
102+
match option:
103+
104+
case "1":
105+
nombre = input("Nombre a buscar: ")
106+
if nombre in agenda:
107+
print(f"El número de {nombre} es {agenda[nombre]}.")
108+
else:
109+
print(f"El contacto {nombre} no existe.")
110+
111+
case "2":
112+
nombre = input("Nombre: ")
113+
numero = input("Número: ")
114+
if numero.isdigit() and len(numero) > 0 and len(numero) <= 11:
115+
agenda[nombre] = numero
116+
print("Contacto agregado exitosamente.")
117+
else:
118+
print("Introduce un numero válido (Máx. 11 dígitos)")
119+
120+
case "3":
121+
nombre = input("Nombre del contacto a actualizar: ")
122+
if nombre in agenda:
123+
numero = input("Nuevo número: ")
124+
if numero.isdigit() and len(numero) > 0 and len(numero) <= 11:
125+
agenda[nombre] = numero
126+
print("Contacto actualizado.")
127+
else:
128+
print("Introduce un numero válido (Máx. 11 dígitos)")
129+
130+
else:
131+
print("Contacto {nombre} no existe.")
132+
133+
134+
case "4":
135+
nombre = input("Nombre de contacto a eliminar: ")
136+
if nombre in agenda:
137+
del agenda[nombre]
138+
print("Contacto eliminado.")
139+
else:
140+
print("Contacto {nombre} no existe.")
141+
142+
case "5":
143+
print("Saliendo")
144+
break
145+
case _:
146+
print("Opción inválida, seleccione una opción del 1 al 5.")
147+
148+
contactos()

0 commit comments

Comments
 (0)