Skip to content

Commit 60baa17

Browse files
committed
#25 - Python
2 parents fe28a4a + 5e8bf00 commit 60baa17

File tree

8 files changed

+888
-0
lines changed

8 files changed

+888
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Python: https://www.python.org/
2+
3+
# Comentario de una línea
4+
5+
# Comentario de varias
6+
# líneas, que será ignorado
7+
# en la ejecución ## del programa
8+
9+
'''
10+
Comentario de varias
11+
líneas para documentación
12+
13+
Esto será interpretado como documentación del programa
14+
'''
15+
16+
# Declaración de variables...
17+
programming_lang = "Python"
18+
# ... porque Python no acepta constantes
19+
# pero se pueden "crear" con UPPER_SNAKE_CASE
20+
CONSTANT_VALUE = "Retos de Programación"
21+
22+
# Tipos de datos primitivos
23+
str = "Esto es una cadena de texto"
24+
concat_str = "Esta es una idea. " 'Esta otra. ' "Y otra."
25+
integer_val: int = 1
26+
float_val: float = 2.5
27+
boolean_val: bool = True
28+
29+
print(concat_str)
30+
print(f"Hello, {programming_lang}!")
Lines changed: 321 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,321 @@
1+
"""
2+
* EJERCICIO:
3+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
4+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
5+
"""
6+
# Listas
7+
my_list = ["pera","uva","manzana", 1, 2, 3, False, True]
8+
print(type(my_list))
9+
print(my_list)
10+
11+
#! Accedder a los elementos
12+
print(my_list[0]) # pera
13+
print(my_list[-1]) # True
14+
print(my_list[1:3]) # ['uva', 'manzana']
15+
print(my_list[-5:]) # [1, 2, 3, False, True]
16+
17+
### Verificar si un elemento está en la lista
18+
if "uva" in my_list:
19+
print("La uva está en la lista")
20+
21+
#! Modificar elementos
22+
my_list[1:3] = "piña", "limon" # Reemplaza uva Y manzana
23+
print(my_list)
24+
25+
#! Agregar Elementos
26+
#* Agregar un elemento
27+
my_list.insert(1,"sandia")
28+
my_list.append("elemento agregado al final")
29+
print(my_list)
30+
31+
#* Agregar una lista a otra lista
32+
my_other_list = ["rosas", "girasoles"]
33+
my_list.extend(my_other_list)
34+
print(my_list)
35+
36+
#! Eliminar elementos
37+
#* Eliminar un elemento usano el elemento
38+
my_list.remove("elemento agregado al final")
39+
40+
#* Eliminar un elemento usando el índice
41+
my_list.pop(8)
42+
del my_list[7]
43+
print(my_list)
44+
45+
#* Eliminar todos los elemmentos de la lista
46+
my_list.clear()
47+
print(my_list)
48+
49+
#! Ordenar Listas
50+
lista_numeros = [6, 1, 5, 3, 4, 2]
51+
print(lista_numeros)
52+
53+
lista_frutas = ["pera","uva","manzana", "limon", "sandia"]
54+
print(lista_frutas)
55+
56+
#* Orenar numericos
57+
lista_numeros.sort()
58+
print(lista_numeros)
59+
60+
#* Ordenar numericos inversamente
61+
lista_numeros.sort(reverse=True)
62+
print(lista_numeros)
63+
64+
#* Ordenar Alfabéticamente
65+
lista_frutas.sort()
66+
print(lista_frutas)
67+
68+
#* Ordenar Alfabéticamente inversamente
69+
lista_frutas.sort(reverse=True)
70+
print(lista_frutas)
71+
72+
#* Ordenar por otros criterios (longitud)
73+
lista_frutas.sort(key = lambda x: len(x))
74+
print(lista_frutas)
75+
76+
# Tuplas
77+
tupla_animales = ("perro", "gato", "raton")
78+
print(type(tupla_animales))
79+
print(tupla_animales)
80+
81+
### Acceder a elementos
82+
print(tupla_animales[0]) # perro
83+
print(tupla_animales[-1]) # raton
84+
print(tupla_animales[:2]) # ('perro', 'gato')
85+
print(tupla_animales[-2:]) # ('gato', 'raton')
86+
87+
#! Verificar si existe un dato en una tupla
88+
if "perro" in tupla_animales:
89+
print("El perro está en la tupla")
90+
91+
#! Modificar tuplas
92+
"""
93+
Las tuplas son inmutables, por lo que no se pueden modificar,
94+
pero si se pueden copiar a iterable (como las listas), modificar y reasignar
95+
! Esto se puede aplicar para
96+
* modificar un elemmento
97+
* eliminar elemmentos
98+
* agregar elemmentos
99+
* concatenar tuplas
100+
"""
101+
# Sets
102+
set_mezclado = {"cebolla", "tomate", "ajo", 1, 2, 3, False, True}
103+
print(type(set_mezclado))
104+
print(set_mezclado)
105+
106+
#! Acceder a elementos
107+
"""
108+
No se puede acceder a elementos de un set por índice o llave
109+
aunque se puede verificar si un elemento se encuentra entro de un set o no
110+
"""
111+
112+
if "tomate" in set_mezclado:
113+
print("El tomate está en el set")
114+
115+
#! Agregar elementos
116+
#* Agregar un elemento
117+
set_mezclado.add("papa")
118+
print(set_mezclado)
119+
120+
#* Agregar varios elementos
121+
especias = {"oregano", "comino", "paprika"}
122+
set_mezclado.update(especias) #Tambien funciona .union()
123+
print(set_mezclado)
124+
125+
#! Eliminar elementos
126+
set_mezclado.remove(True)
127+
set_mezclado.pop() #Pop no perite indice, elimina el primer elemento
128+
print(set_mezclado)
129+
130+
set_mezclado.clear()
131+
print(set_mezclado)
132+
133+
# Diccionarios
134+
diccionario_ingredientes = {
135+
"tomate":{
136+
"cantidad": 2,
137+
"categoria": "verdura",
138+
"color": "rojo",
139+
},
140+
"papa":{
141+
"cantidad": 1,
142+
"categoria": "verdura",
143+
"color": "amarillo",
144+
},
145+
"coco":{
146+
"cantidad": 3,
147+
"categoria": "fruta",
148+
"color": "blanco",
149+
}
150+
}
151+
print(type(diccionario_ingredientes))
152+
print(diccionario_ingredientes)
153+
154+
#! Acceder a elementos
155+
print(diccionario_ingredientes["tomate"]) # {'cantidad': 2, 'categoria': 'verdura', 'color': 'rojo'}
156+
print(diccionario_ingredientes["tomate"]["cantidad"]) # 2
157+
element = diccionario_ingredientes.get("coco")
158+
print(element) # {'cantidad': 3, 'categoria': 'fruta', 'color': 'blanco'}
159+
print(element.keys()) # dict_keys(['cantidad', 'categoria', 'color'])
160+
print(element.values()) # dict_values([3, 'fruta', 'blanco'])
161+
162+
#! Modificar elementos
163+
element["cantidad"] = 4
164+
print(element)
165+
166+
element.update({"cantidad": 5, "color": "cafe"})
167+
print(element)
168+
169+
#! Agregar elementos
170+
diccionario_ingredientes["cebolla"] = {
171+
"cantidad": 1,
172+
"categoria": "verdura",
173+
"color": "morado",
174+
}
175+
print(diccionario_ingredientes)
176+
177+
element.update({"sabor": "dulce"})
178+
print(element)
179+
180+
#! Eliminar elementos
181+
diccionario_ingredientes.pop("papa")
182+
print(diccionario_ingredientes)
183+
184+
diccionario_ingredientes.popitem() #Elimina el último elemento
185+
print(diccionario_ingredientes)
186+
187+
del diccionario_ingredientes["tomate"]
188+
print(diccionario_ingredientes)
189+
190+
#! Vaciar Diccionario
191+
element.clear()
192+
print(element)
193+
"""
194+
DIFICULTAD EXTRA (opcional):
195+
* Crea una agenda de contactos por terminal.
196+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
197+
* - Cada contacto debe tener un nombre y un número de teléfono.
198+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
199+
* los datos necesarios para llevarla a cabo.
200+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
201+
* (o el número de dígitos que quieras)
202+
* - También se debe proponer una operación de finalización del programa.
203+
"""
204+
205+
agenda = {}
206+
opciones = ("1", "2", "3", "4", "0")
207+
208+
def buscar_contacto(nombre:str):
209+
if nombre in agenda:
210+
return f"Nombre: {nombre}, Telefono: {agenda[nombre]}"
211+
return False
212+
213+
def agregar_contacto(nombre:str, telefono:int):
214+
if not buscar_contacto(nombre.lower()):
215+
agenda[nombre] = telefono
216+
return f"{nombre} agregado correctamente"
217+
return False
218+
219+
def modificar_contacto(nombre:str, telefono:int):
220+
if buscar_contacto(nombre):
221+
agenda[nombre] = telefono
222+
return f"{nombre} actualizado a {agenda[nombre]} "
223+
return False
224+
225+
def eliminar_contacto(nombre:str):
226+
if buscar_contacto(nombre):
227+
agenda.pop(1)
228+
return f"{nombre} eliminado"
229+
return False
230+
231+
def solicitarNombre():
232+
while True:
233+
nombre = input("Ingrese el nombre o 0 para salir: ")
234+
if nombre.isdigit():
235+
print(f"Nombre invalido {nombre}")
236+
continue
237+
elif nombre == "0":
238+
return False
239+
return nombre
240+
241+
def solicitarNumero():
242+
while True:
243+
telefono = input("Ingrese Telefono o 0 para salir: ")
244+
if telefono.isnumeric() and len(telefono) == 10:
245+
return telefono
246+
elif telefono == "0":
247+
return False
248+
print(f"Numero invalido: {telefono}")
249+
250+
def interfaz():
251+
print("Bienvenido a la agenta de contactos")
252+
253+
# Ciclo infinito
254+
while True:
255+
# Mostrar opciones
256+
print(f"""
257+
Actualmente hay {len(agenda)} {"contacto" if len(agenda) < 2 else "contactos"} en la agenda
258+
Inserte la opción deseada:
259+
1. Buscar contacto
260+
2. Agregar contacto
261+
3. Actualizar contacto
262+
4. Eliminar contacto
263+
0. Salir
264+
""")
265+
266+
# Leer la opción y verifica si es válida
267+
entrada = input("Opción: ")
268+
if entrada not in opciones:
269+
print("Opción no válida")
270+
continue
271+
272+
# Salir
273+
if entrada == "0":
274+
print("Gracias por usar la agenda, adios")
275+
break
276+
277+
# Buscar contacto
278+
if entrada == "1":
279+
print("Buscar contacto")
280+
nombre = solicitarNombre()
281+
contacto = buscar_contacto(nombre)
282+
if contacto:
283+
print(contacto)
284+
else:
285+
print("Registro no encontrado")
286+
287+
# Agregar contacto (Mexico, 10 Numeros)
288+
if entrada == "2":
289+
print("Agregar contacto")
290+
nombre = solicitarNombre()
291+
if nombre:
292+
telefono = solicitarNumero()
293+
if telefono:
294+
print(agregar_contacto(nombre, telefono))
295+
296+
# Actualizar contacto
297+
if entrada == "3":
298+
print("Actualizar contacto")
299+
nombre = solicitarNombre()
300+
if nombre:
301+
contacto = buscar_contacto(nombre)
302+
if not contacto:
303+
print("Registro no encontrado")
304+
continue
305+
print(contacto)
306+
telefono = solicitarNumero()
307+
if telefono:
308+
print(modificar_contacto(nombre, telefono))
309+
310+
# Eliminar contacto
311+
if entrada == "4":
312+
print("Eliminar contacto")
313+
nombre = solicitarNombre()
314+
if nombre:
315+
contacto = buscar_contacto(nombre)
316+
if not contacto:
317+
print("Registro no encontrado")
318+
continue
319+
print(eliminar_contacto(nombre))
320+
321+
interfaz()

0 commit comments

Comments
 (0)