Skip to content

Commit 370033b

Browse files
authored
Merge pull request mouredev#3777 from C-Gabs/main
#3 - Python
2 parents f0e0a87 + 12c2e1c commit 370033b

File tree

1 file changed

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

1 file changed

+275
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
#Reto 03
2+
3+
'''EJERCICIO:
4+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto
5+
* en tu lenguaje.
6+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea una agenda de contactos por terminal.
10+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización
11+
* y eliminación de contactos.
12+
* - Cada contacto debe tener un nombre y un número de teléfono.
13+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar,
14+
* y a continuación los datos necesarios para llevarla a cabo.
15+
* - El programa no puede dejar introducir números de teléfono no númericos y con más
16+
* de 11 dígitos (o el número de dígitos que quieras).
17+
* - También se debe proponer una operación de finalización del programa.'''
18+
19+
20+
#Creación de listas
21+
22+
lista_1 = []
23+
24+
lista_2 = list()
25+
26+
#Inserción de elementos
27+
lista_1 = ["JavaScript"]
28+
print(lista_1)
29+
lista_1.append("Python")
30+
print(lista_1)
31+
lista_1.append("Kotlin")
32+
print(lista_1)
33+
lista_1.insert(1,"Swift")
34+
print(lista_1)
35+
lista_1.extend(["C#","C++","Java"])
36+
print(lista_1)
37+
38+
lista_2 = lista_1[:]
39+
print()
40+
#Borrado de elementos
41+
42+
lista_1.pop()
43+
print(lista_1)
44+
lista_1.pop(0)
45+
print(lista_1)
46+
lista_1.remove("C++")
47+
print(lista_1)
48+
lista_1.clear()
49+
print(lista_1)
50+
print()
51+
52+
#ordenacón de elementos
53+
54+
lista_2.sort()
55+
print(lista_2)
56+
lista_2.reverse()
57+
print(lista_2)
58+
print()
59+
60+
#actualización de elementos
61+
62+
lista_2[3] = "Html"
63+
print(lista_2)
64+
print("\n")
65+
66+
#Creación de tuplas
67+
68+
tupla_1 = ()
69+
tupla_2 = tuple()
70+
71+
#inserción de elementos
72+
73+
tupla_1 = ("Python")
74+
print(tupla_1)
75+
tupla_1 = ("Python", "Java")
76+
print(tupla_1)
77+
print()
78+
79+
'''Las tuplas son estructuras no mutables,
80+
estas no se pueden modificar'''
81+
#tupla_1[1] = "Html"
82+
83+
#Borrado de elementos
84+
85+
tupla_1 = ()
86+
print(tupla_1)
87+
print("\n")
88+
89+
#Creación de sets
90+
91+
set_1 = set()
92+
set_2 = set()
93+
94+
#Inserción de elementos
95+
96+
set_2.add("Python")
97+
print(set_2)
98+
set_2.add("Kotlin")
99+
print(set_2)
100+
set_1.add("JavaScript")
101+
print(set_1)
102+
set_1.add("Java")
103+
print(set_1)
104+
set_1.add("Swift")
105+
print(set_1)
106+
set_1.add("HTML")
107+
print(set_1)
108+
print()
109+
110+
#Borrado de elementos
111+
112+
set_1.discard("Java")
113+
print(set_1)
114+
115+
set_1.remove("HTML")
116+
print(set_1)
117+
118+
set_1.clear()
119+
print(set_1)
120+
print()
121+
122+
#Actualización de elementos
123+
set_2.update({"Java","Swift","SQL"})
124+
print(set_2)
125+
set_2.intersection_update({"Pandas","Python","SQL","Java","HTML"})
126+
print(set_2)
127+
set_2.symmetric_difference_update({"Python","Kotlin","SQL","HTML","Java","Pandas","Numpy"})
128+
print(set_2)
129+
print("\n")
130+
131+
'''Los set son estructuras no ordenadas,
132+
por lo que no tienen operaciones de ordenación
133+
asociadas'''
134+
135+
#Creación de diccionarios
136+
137+
dict_1 = {}
138+
dict_2 = dict()
139+
140+
#Inserción de elementos
141+
142+
dict_1["Nombre"] = "Brais"
143+
print(dict_1)
144+
dict_1["Apellido"] = "Moure"
145+
print(dict_1)
146+
dict_1 = {"Nombre":"Brais","Apellido":"Moure","Alias":"MoureDev"}
147+
print()
148+
#Borrado de elementos
149+
150+
retorno = dict_1.pop("Apellido")
151+
print(retorno)
152+
print(dict_1)
153+
retorno = dict_1.popitem()
154+
print(retorno)
155+
print(dict_1)
156+
dict_1.clear()
157+
print(dict_1)
158+
print()
159+
160+
#Actualización de elementos
161+
dict_1 = {"Nombre":"Brais","Apellido":"Moure","Alias":"MoureDev","Lenguaje":"Kotlin"}
162+
print(dict_1)
163+
dict_1.update({"Lenguaje":"Python","Librerias":["Pandas", "Numpy"]})
164+
print(dict_1)
165+
print("\n")
166+
167+
#Reto Extra
168+
169+
contactos = {}
170+
opcion_menu = 1
171+
import os
172+
while opcion_menu != 0:
173+
print("AGENDA DE CONTACTOS")
174+
try:
175+
opcion_menu = int(input('''
176+
Elija una opción\n
177+
1- Buscar contactos
178+
2- Agregar contacto
179+
3- Actualizar contacto
180+
4- Eliminar contacto
181+
5- Imprimir agenda
182+
0- Finalizar programa
183+
'''))
184+
if opcion_menu < 0 or opcion_menu > 5:
185+
raise ValueError
186+
except ValueError:
187+
print("Debe ingresar un caracter numérico entre el 0 y el 5\n")
188+
else:
189+
if opcion_menu == 1:
190+
os.system("cls")
191+
print("BUSCAR CONTACTO")
192+
opcion_1 = "SI"
193+
while opcion_1.upper() != "NO":
194+
try:
195+
nombre = str(input("Ingrese el nombre del contacto \n"))
196+
except ValueError:
197+
print("Valor no válido, debe ingresar una cadena de texto\n")
198+
else:
199+
print(f"{nombre}:", contactos.get(nombre, "No se encontró el contacto solicitado\n"))
200+
finally:
201+
opcion_1 = str(input("Desea buscar otro contacto? SI/NO\n"))
202+
203+
elif opcion_menu == 2:
204+
os.system("cls")
205+
print("AGREGAR CONTACTO")
206+
opcion_2 = "SI"
207+
while opcion_2.upper() != "NO":
208+
try:
209+
nombre = str(input("Ingrese el nombre del contacto\n"))
210+
telefono = int(input("Ingrese el número telefonico del contacto\n"))
211+
if len(str(telefono)) > 11:
212+
raise ValueError
213+
except ValueError:
214+
print('''
215+
Valor no válido
216+
El nombre de contacto debe ser una cadena de texto
217+
El número de telefono debe ser compuesto solo por caracteres numéricos
218+
y no contener mas de 11 caracteres\n''')
219+
else:
220+
contactos[nombre] = telefono
221+
print(contactos)
222+
finally:
223+
opcion_2 = str(input("Desea agregar otro contacto? SI/NO\n"))
224+
elif opcion_menu == 3:
225+
os.system("cls")
226+
print("ACTUALIZAR CONTACTO")
227+
opcion_3 = "SI"
228+
while opcion_3.upper() != "NO":
229+
try:
230+
nombre = str(input("Ingrese el nombre del contacto que desea actualizar\n"))
231+
nuevo_nombre = str(input("Ingrese el nuevo nombre del contacto\n"))
232+
telefono = int(input("Ingrese el nuevo número telefonico del contacto\n"))
233+
if len(str(telefono)) > 11:
234+
raise ValueError
235+
except ValueError:
236+
print('''
237+
Valor no válido
238+
El nombre de contacto debe ser una cadena de texto
239+
El número de telefono debe ser compuesto solo por caracteres numéricos
240+
y no contener mas de 11 caracteres\n''')
241+
else:
242+
if nombre in contactos.keys():
243+
contactos.pop(nombre)
244+
contactos.update({nuevo_nombre:telefono})
245+
print(contactos)
246+
else:
247+
print("El contacto no fue encontrado")
248+
finally:
249+
opcion_3 = str(input("Desea actualizar otro contacto? SI/NO\n"))
250+
elif opcion_menu == 4:
251+
os.system("cls")
252+
print("ELIMINAR CONTACTO")
253+
opcion_4 = "SI"
254+
while opcion_4.upper() != "NO":
255+
try:
256+
nombre = str(input("Ingrese el nombre del contacto que desea eliminar\n"))
257+
except ValueError:
258+
print("Valor no válido, debe ingresar una cadena de texto\n")
259+
else:
260+
if nombre in contactos.keys():
261+
contactos.pop(nombre)
262+
print(contactos)
263+
else:
264+
print("El contacto no fue encontrado")
265+
finally:
266+
opcion_4 = str(input("Desea eliminar otro contacto? SI/NO\n"))
267+
elif opcion_menu == 5:
268+
os.system("cls")
269+
print("CONTACTOS\n")
270+
print(contactos)
271+
input("presione una tecla para continuar: ")
272+
elif opcion_menu == 0:
273+
print("Adios")
274+
else:
275+
print("Esta opción no es válida")

0 commit comments

Comments
 (0)