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