Skip to content

Commit 7294e74

Browse files
committed
#3 - Python
1 parent f2dff0f commit 7294e74

File tree

1 file changed

+175
-0
lines changed

1 file changed

+175
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
'''
2+
Estructuras de datos integradas por defecto
3+
'''
4+
5+
'''
6+
Cadenas de texto (strings):
7+
La primera estructura es también un tipo de dato, que mediante bucles, condicionales, funciones, etc. podemos recorrer cada caracter como un elemento independiente, por ejemplo:
8+
'''
9+
10+
my_string = 'Hola, Moure'
11+
12+
print(my_string.casefold()) # Podemos usar metodos (funciones) para manipular strings
13+
14+
#my_string[0] = 'B' # Esto produce un error porque las cadenas son secuencias "inmutables" de caracteres
15+
16+
for letter in my_string: # Podemos recorrer una cadena mediante un bucle
17+
print(letter)
18+
19+
def imprime_nombre(string):
20+
if string.startswith('Hola'): # Condicionales
21+
return string[string.find(',') + 2 :]
22+
23+
print(imprime_nombre(my_string))
24+
25+
texto = 'Python'
26+
nuevo_texto = texto[:2] + 'x' + texto[3:]
27+
print(nuevo_texto)
28+
29+
'''
30+
Listas (list):
31+
Las listas son estructuras mutables y ordenadas que pueden contener cualquier tipo de dato, por ejemplo:
32+
'''
33+
34+
my_list = [1, 2, 3, 4, 5] #Se puede crear una lista con [] o con la funcion list()
35+
#Decimos que una lista es ordenada porque, aunque no lo vemos, cada elemento tiene asociado un indice que va de 0 hasta n-1, siendo n la cantidad de elementos de la lista
36+
37+
my_list[0] = 10 # Esto no produce errores, es perfectamente posible porque las listas son mutables
38+
print(dir(my_list)) #accedemos a los metodos de un tipo de dato o estructura mediante la funcion dir
39+
my_list.append(6)
40+
my_list.insert(0, 1)
41+
my_list.pop(1)
42+
print(my_list)
43+
44+
my_list.sort(reverse = True)
45+
print(my_list)
46+
47+
for num in my_list:
48+
print(num)
49+
50+
my_list2 = ("Hola", 40, 33.35, True)
51+
my_list.insert(3, my_list2) # Listas dentro de listas 🤯
52+
print(my_list)
53+
54+
for i in my_list2:
55+
print(i)
56+
57+
'''
58+
Tuplas (tuple):
59+
Las tuplas son muy parecidas a las listas, las diferencian principalmente tres caracteristicas, las tuplas son inmutables, no ordenadas y generalmente se usan para almacenar datos heterogeneos (no es estricto pero por convension lo es)
60+
'''
61+
my_tuple = 1984, 2025, "Python"
62+
print(my_tuple[1])
63+
64+
a, b, c = my_tuple
65+
66+
my_tuple_2 = ([9, 8, 7, 6], [6, 7, 8, 9]) #Aunque una tupla es inmutable, puede contener objetos mutables
67+
68+
for item in my_tuple_2:
69+
for num in item:
70+
print(num)
71+
72+
73+
'''
74+
Conjuntos (set):
75+
Es una colección no ordenada y sin elementos duplicados. Se puede crear un conjunto con {} o la funcion set(), pero para crear un conjunto vacio no se usa {}, pues esto creará un diccionario. Los conjuntos también soportan operaciones matemáticas como la unión, intersección, diferencia, y diferencia simétrica.
76+
'''
77+
78+
jugadores = {"Cristiano", "Messi", "Iniesta", "Xavi", "Messi", "Pele"}
79+
80+
print(jugadores)
81+
82+
"Pele" in jugadores
83+
84+
bucle = {x for x in "Parangaricutirimicuaro" if x not in "abc"}
85+
print(bucle)
86+
87+
s = {1, 3}
88+
s.add(2)
89+
s.remove(1)
90+
sorted(s)
91+
print(s)
92+
93+
'''
94+
Diccionarios (dict):
95+
Un diccionario es muy similar a un conjunto o una lista. Sin embargo, su principal diferencia es que en lugar de usar indicer núnmericos ordenados, un diccionario utiliza como indice una "clave". Cada clave está asociada a un valor, por esto se les llama pares "clave: valor". Las claves son únicas dentro del diccionario. En escencia, los elementos de un diccionario son tuplas clave/valor.
96+
'''
97+
telefonos = {'Andres': 3126, 'Moure': 3468, 'Python': 3249}
98+
telefonos['Brais'] = 9284
99+
print(telefonos)
100+
101+
del telefonos['Moure']
102+
telefonos['Snake'] = 2087
103+
print(telefonos)
104+
105+
'Moure' not in telefonos
106+
'Snake' in telefonos
107+
108+
tels = dict([('Andres', 3126), ('Python', 3249), ('Brais', 9284)])
109+
print(tels)
110+
111+
my_dict = {x: x**2 for x in (2, 4, 6)}
112+
print(my_dict)
113+
114+
d = {'b': 2, 'a': 1}
115+
ordenado = dict(sorted(d.items()))
116+
print(ordenado)
117+
118+
'''
119+
Ejercicio Extra
120+
'''
121+
122+
directorio = dict()
123+
124+
while True:
125+
126+
print('\n--- Agenda de Contactos ---')
127+
print('Operaciones disponibles: añadir, borrar, buscar, actualizar, salir')
128+
129+
operacion = input('\nIngresa la operación: ').lower()
130+
131+
if operacion == "salir":
132+
print('¡Hasta luego!')
133+
break
134+
135+
if operacion not in ('añadir', 'borrar', 'buscar', 'actualizar'):
136+
print(f'Error: "{operacion}" no es una operación valida.')
137+
continue
138+
139+
nombre = input('Nombre del contacto: ').strip()
140+
141+
if operacion == 'buscar':
142+
if nombre in directorio:
143+
print(f'Teléfono: {directorio[nombre]}')
144+
else:
145+
print('Contacto no encontrado.')
146+
continue
147+
148+
if operacion == 'borrar':
149+
if nombre in directorio:
150+
del directorio[nombre]
151+
print(f'Contacto "{nombre}" eliminado.')
152+
else:
153+
print('El contacto no existe.')
154+
continue
155+
156+
157+
telefono = input('Teléfono: ').strip()
158+
159+
if not telefono.isdigit():
160+
print('Error: El teléfono debe contener solo números.')
161+
continue
162+
if len(telefono) != 10:
163+
print('Error: El teléfono debe tener 10 dígitos.')
164+
continue
165+
166+
if operacion == 'añadir' and nombre in directorio:
167+
print('Error: El contacto ya existe. Usa "actualizar".')
168+
continue
169+
170+
if operacion == 'actualizar' and nombre not in directorio:
171+
print('Error: Contacto no encontrado. Usa "añadir".')
172+
continue
173+
174+
directorio[nombre] = telefono
175+
print(f'Contacto "{nombre}" {"actualizado" if operacion == "actualizar" else "añadido"}.')

0 commit comments

Comments
 (0)