Skip to content

Commit a880651

Browse files
authored
Merge pull request #8320 from cbuenrostrovalverde/cbuenrostrovalverde
#4 - Python
2 parents 4d7fd7e + 8b762bf commit a880651

File tree

2 files changed

+293
-0
lines changed

2 files changed

+293
-0
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
'''
2+
/*
3+
* EJERCICIO:
4+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
5+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
6+
*/
7+
'''
8+
9+
# Listas, tuplas, conjuntos, diccionarios
10+
11+
# LISTA
12+
verduras = ['tomate', 'lechuga', 'patata']
13+
14+
# Insertar elementos
15+
verduras.append('calabacín')
16+
17+
# Borrar elementos
18+
verduras.remove('tomate')
19+
20+
# Actualizar
21+
verduras[1] = 'berenjena'
22+
23+
# Ordenar
24+
verduras.sort()
25+
26+
print(verduras)
27+
28+
# TUPLA
29+
30+
tupla = (1, 2, 3, 4, 5, 6, 7, 20)
31+
32+
'En una tupla no se pueden modificar los datos'
33+
34+
# CONJUNTOS
35+
36+
colores = {'rojo', 'amarillo', 'verde', 'azul'}
37+
38+
# Añadir datos al conjunto
39+
colores.add('naranja')
40+
41+
# Borrar pese a que no exista dentro del conjunto
42+
colores.discard('violeta')
43+
44+
# Actualizar datos
45+
colores.update('lo que quieras tú')
46+
47+
# Ordenar (convertirá el conjunto en una lista)
48+
colores_ordenados = sorted(colores)
49+
50+
# DICCIONARIOS
51+
52+
alumnos = {
53+
'nombre': 'Carlos',
54+
'edad': 20
55+
}
56+
57+
# Insetar y actualizar datos
58+
alumnos['apellido'] = 'Buenrostro'
59+
60+
alumnos['edad'] = 30
61+
62+
# Eliminar datos
63+
64+
del alumnos['edad']
65+
66+
# Ordenación
67+
68+
sorted_alumnos = dict(sorted(alumnos.items()))
69+
print(alumnos)
70+
71+
'''
72+
* DIFICULTAD EXTRA (opcional):
73+
* Crea una agenda de contactos por terminal.
74+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
75+
* - Cada contacto debe tener un nombre y un número de teléfono.
76+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
77+
* los datos necesarios para llevarla a cabo.
78+
* - El programa no puede dejar introducir números de teléfono no numéricos y con más de 11 dígitos.
79+
* (o el número de dígitos que quieras)
80+
* - También se debe proponer una operación de finalización del programa.
81+
'''
82+
83+
lista_contactos = []
84+
agenda = {}
85+
86+
def mostrar_menu():
87+
print("\n--- AGENDA DE CONTACTOS ---")
88+
print("1. Añadir contacto")
89+
print("2. Buscar contacto")
90+
print("3. Actualizar contacto")
91+
print("4. Eliminar contacto")
92+
print("5. Ver todos los contactos")
93+
print("6. Salir")
94+
95+
def telefono_valido(telefono):
96+
return telefono.isdigit() and len(telefono) <= 11
97+
98+
def añadir_contacto(agenda):
99+
nombre = input('Introduzca el nombre del contacto: ').strip()
100+
telefono = input('Introduzca un teléfono: ').strip()
101+
if not telefono_valido (telefono):
102+
print('Introduzca por favor un teléfono válido. Máximo 11 números')
103+
agenda[nombre] = telefono
104+
print(f'Contacto {nombre} ha sido añadido con éxito.')
105+
106+
def buscar_contacto(agenda):
107+
nombre = input('Introduzca un nombre para la búsqueda: ')
108+
if nombre in agenda:
109+
print(f'{nombre}: {agenda[nombre]}')
110+
else:
111+
print(f'Ese nombre no se encuentra en su agenda de contactos.')
112+
113+
def actualizar_contacto(agenda):
114+
nombre = input('Introduzca el nombre del contacto: ')
115+
if nombre in agenda:
116+
nuevo_telefono = input('Introduzca nuevo teléfono: ').strip()
117+
if not telefono_valido(nuevo_telefono):
118+
print('Teléfono no válido')
119+
return
120+
agenda[nombre] = nuevo_telefono
121+
print('Contacto actualizado con éxito.')
122+
else:
123+
print('El contacto no se enucuentra dentro de su agenda.')
124+
125+
def eliminar_contacto(agenda):
126+
nombre = input('Introduzca el nombre de su contacto a eliminar: ')
127+
if nombre in agenda:
128+
del agenda[nombre]
129+
print('Contacto eliminado')
130+
else:
131+
print('No se ha podido encontrar el contacto a eliminar.')
132+
133+
def mostrar_agenda(agenda):
134+
if not agenda:
135+
print('Agenda vacía')
136+
else:
137+
for nombre, telefono in agenda.items():
138+
print(f'{nombre}:{telefono}')
139+
140+
while True:
141+
mostrar_menu()
142+
opcion = input('Bienvenido a tu agenda virutal. \n Por favor, escoja una opción: ')
143+
if opcion == 1:
144+
añadir_contacto(agenda)
145+
elif opcion == 2:
146+
buscar_contacto(agenda)
147+
elif opcion == 3:
148+
actualizar_contacto(agenda)
149+
elif opcion == 4:
150+
eliminar_contacto(agenda)
151+
elif opcion == 5:
152+
mostrar_agenda(agenda)
153+
elif opcion == 'Salir'.lower():
154+
print('Saliendo de la aplicación')
155+
break
156+
else:
157+
print('Opción no válida. Inténtelo de nuevo.')
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
'''
2+
* EJERCICIO:
3+
* Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
4+
* en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
5+
* - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
6+
* conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
10+
* para descubrir si son:
11+
* - Palíndromos
12+
* - Anagramas
13+
* - Isogramas
14+
'''
15+
16+
# Acceso a caracteres específicos:
17+
cadena = 'Hola Mundo'
18+
print(cadena[0])
19+
20+
# Subcadenas(Indexación)
21+
print(cadena[:7])
22+
23+
# Longitud
24+
print(len(cadena))
25+
26+
# Concatenación
27+
cadena1 = 'Hola'
28+
cadena2 = 'Mundo'
29+
30+
print(cadena1 + cadena2)
31+
print(cadena1 + ' ' + cadena2 + '!')
32+
33+
# Repetición
34+
print(cadena1 + cadena1 + cadena1)
35+
print(cadena1 * 3)
36+
37+
# Slicing (porción)
38+
print(cadena2[2:5])
39+
print(cadena2[2:]) # Que empiece desde donde quiero hasta el final
40+
print(cadena2[0:2])
41+
print(cadena2[:2])
42+
43+
# Búsqueda
44+
print("H" in cadena1)
45+
print("M" in cadena1)
46+
47+
# Reemplazo
48+
print(cadena1.replace("o", "a"))
49+
50+
# División
51+
print(cadena1.split("l"))
52+
53+
# Mayúsculas y minúsculas
54+
print(cadena1.upper())
55+
print(cadena2.lower())
56+
print('carlos buenrostro'.title())
57+
print('carlos buenrostro'.capitalize())
58+
59+
# Eliminación de espacions al principio y al final
60+
print('carlos buenrostro valverde'.strip() + ' ' + '@carlosbuenrostrovalverde')
61+
62+
# Búsqueda al principio y al final
63+
print(cadena1.startswith('H'))
64+
print(cadena1.startswith('M'))
65+
66+
# Búsqueda de posición
67+
print('Carlos Buenrostro Valverde @cbuenrostrovalverde'.find('@'))
68+
print('Carlos Buenrostro Valverde @cbuenrostrovalverde'.find('l'))
69+
print('Carlos Buenrostro Valverde @cbuenrostrovalverde'.lower().find('v'))
70+
71+
cadena3 = 'Carlos Buenrostro Valverde @cbuenrostrovalverde'
72+
73+
# Búsqueda de ocurrencias
74+
print(cadena3.lower().find('n'))
75+
76+
# Formateo
77+
print('Saludo: {}, Dirigido: {}'.format(cadena1, cadena2) )
78+
79+
# Interpolación
80+
print(f'Saludo: {cadena1}, lenguaje: {cadena2}!')
81+
82+
# Transformación en lista de caracteres:
83+
print(list(cadena3))
84+
85+
# Transformación de lista en cadena:
86+
cadena4 = [cadena1, ' ', cadena2, '!']
87+
88+
print(''.join(cadena4))
89+
90+
# Transformaciones numéricas:
91+
92+
cadena5 = '123456789'
93+
cadena5 = int(cadena5)
94+
print(cadena5)
95+
96+
# Comprobaciones varias:
97+
98+
print(cadena1.isalnum())
99+
print(cadena1.isalpha())
100+
101+
'''
102+
Extra
103+
'''
104+
105+
'''Crea un programa que analice dos palabras diferentes y realice comprobaciones
106+
* para descubrir si son:
107+
* - Palíndromos
108+
* - Anagramas
109+
* - Isogramas
110+
'''
111+
112+
def check(word1: str, word2: str):
113+
# Palíndromos: Si inviertes el orden, obtendríamos la misma palabra (radar, asa, etc...)
114+
print(f'¿{word1} es una palabra palíndroma?: {word1 == word1[::-1]}')
115+
print(f'¿{word2} es una palabra palíndroma?: {word2 == word2[::-1]}')
116+
117+
# Anagramas: Palabra que resulta de la transposiciónde todas las letras de una palabra. Cambio de orden de las letras.
118+
print(f'¿{word1} es una anagrama de {word2}?: {sorted(word1) == sorted(word2)}')
119+
120+
# Isograma
121+
print(f'¿{word1} es una isograma?: {len(word1) == len(set(word1))}')
122+
print(f'¿{word2} es una isograma?: {len(word2) == len(set(word2))}')
123+
124+
word_dict = dict()
125+
for word in word1:
126+
word_dict[word] = word_dict.get(word, 0) + 1
127+
128+
isogram = True
129+
isogram_len = word_dict.values
130+
for word_count in word_dict:
131+
if len(word_count) != isogram_len:
132+
isogram = False
133+
break
134+
135+
# check('roma', 'amor')
136+
check('radar', 'python')

0 commit comments

Comments
 (0)