Skip to content

Commit f14d19d

Browse files
committed
#28 - Python
1 parent 7e197c7 commit f14d19d

File tree

4 files changed

+521
-0
lines changed

4 files changed

+521
-0
lines changed
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
""" /*
2+
* EJERCICIO:
3+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto
4+
* en tu lenguaje.
5+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Crea una agenda de contactos por terminal.
9+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización
10+
* y eliminación de contactos.
11+
* - Cada contacto debe tener un nombre y un número de teléfono.
12+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar,
13+
* y a continuación los datos necesarios para llevarla a cabo.
14+
* - El programa no puede dejar introducir números de teléfono no númericos y con más
15+
* de 11 dígitos (o el número de dígitos que quieras).
16+
* - También se debe proponer una operación de finalización del programa.
17+
*/ """
18+
19+
## Estructuras de datos
20+
21+
## Listas --> Coleccion de elementos
22+
23+
from ast import main
24+
from os import name
25+
26+
27+
my_list = ["lista", "5", "False", "1.2"]
28+
print(my_list)
29+
my_list.append("al final") # Agregar
30+
print(my_list)
31+
my_list.remove("lista") # Borrar
32+
print(my_list)
33+
i = 1
34+
my_list[i] = "valor reemplazado" # Actualizar
35+
print(my_list)
36+
my_list.sort() # Ordenar
37+
print(my_list)
38+
39+
## Tuplas --> Conjunto datos no mutable
40+
41+
my_tuple = ("1", "tupla", "2.5", "True")
42+
print(my_tuple)
43+
print(my_tuple[2]) # Acceso
44+
my_tuple = tuple(sorted(my_tuple)) # Ordenar
45+
print(my_tuple)
46+
47+
## Sets --> Colleccion no ordenada con elementos no repetidos
48+
49+
my_set = {"set", "6", "1.3", "False"}
50+
print((my_set))
51+
my_set.add("pepe") # Agregar
52+
print(my_set)
53+
my_set.discard("set") # Borrar
54+
print(my_set)
55+
my_set = set(sorted(my_set)) # No se ordena
56+
print(my_set)
57+
58+
## Diccionarios --> Coleccion de clave valor
59+
60+
my_dict = {
61+
"estructura": "dicionario",
62+
"1": "True",
63+
}
64+
print(my_dict)
65+
my_dict["nueva llave"] = "nuevo valor" # Agregar
66+
print(my_dict)
67+
print(my_dict["estructura"]) # Acceder
68+
my_dict["estructura"] = "nuevo diccionario" # Actualizar
69+
print(my_dict)
70+
del my_dict["1"] # Borrar
71+
print(my_dict)
72+
my_dict = dict(sorted(my_dict.items())) # Ordenamiento
73+
print(my_dict)
74+
75+
"""
76+
* DIFICULTAD EXTRA (opcional):
77+
* Crea una agenda de contactos por terminal.
78+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización
79+
* y eliminación de contactos.
80+
* - Cada contacto debe tener un nombre y un número de teléfono.
81+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar,
82+
* y a continuación los datos necesarios para llevarla a cabo.
83+
* - El programa no puede dejar introducir números de teléfono no númericos y con más
84+
* de 11 dígitos (o el número de dígitos que quieras).
85+
* - También se debe proponer una operación de finalización del programa.
86+
*/ """
87+
88+
89+
def agregar_contacto(agenda: dict, contacto_nombre, contacto_numero: str):
90+
91+
if len(contacto_numero) <= 11 and contacto_numero.isdigit():
92+
agenda[contacto_nombre] = contacto_numero
93+
print("")
94+
return agenda
95+
else:
96+
print("El numero ingresado no es valido.")
97+
print("")
98+
return agenda
99+
100+
101+
def listar_contactos(agenda: dict):
102+
print("Los contactos en tu agenda son: ")
103+
print("")
104+
for contacto, numero in agenda.items():
105+
print(f"Contacto: {contacto} Numero : {numero}")
106+
print("")
107+
108+
109+
def buscar_contacto(agenda: dict, nombre_contacto):
110+
if agenda[nombre_contacto]:
111+
print(f"EL contacto {nombre_contacto} tiene nuemro: {agenda[nombre_contacto]}")
112+
print("")
113+
else:
114+
print("No esta en la agenda")
115+
print("")
116+
117+
118+
def actualizar_contacto(agenda: dict, nombre_contacto, nuevo_numero):
119+
if agenda[nombre_contacto]:
120+
agenda[nombre_contacto] = nuevo_numero
121+
return agenda
122+
else:
123+
print("No esta en la agenda")
124+
print("")
125+
126+
127+
def eliminar_contacto(agenda: dict, nombre_contacto):
128+
if agenda[nombre_contacto]:
129+
del agenda[nombre_contacto]
130+
return agenda
131+
else:
132+
print("No esta en la agenda")
133+
print("")
134+
135+
if __name__ == "__main__":
136+
137+
print("")
138+
print("")
139+
print("")
140+
141+
agenda: dict = {}
142+
while 1:
143+
144+
print("Que operacion quieres realizar ?")
145+
print("")
146+
print("1 . Agregar")
147+
print("2 . Borrar")
148+
print("3 . Actualizar")
149+
print("4 . Buscar")
150+
print("5 . Listar")
151+
print("6 . Salir")
152+
print("")
153+
154+
op = input("Ingrese la operacion.")
155+
print("")
156+
157+
match op:
158+
case "1":
159+
contacto = input("Ingrese contacto: ")
160+
numero = input("Ingrese numero: ")
161+
agenda = agregar_contacto(agenda, contacto, numero)
162+
case "2":
163+
contacto = input("Ingrese contacto: ")
164+
agenda = eliminar_contacto(agenda, contacto)
165+
case "3":
166+
contacto = input("Ingrese contacto: ")
167+
numero_nuevo = input("Ingrese numero: ")
168+
actualizar_contacto(agenda, contacto, numero_nuevo)
169+
case "4":
170+
contacto = input("Ingrese contacto: ")
171+
buscar_contacto(agenda, contacto)
172+
case "5":
173+
listar_contactos(agenda)
174+
case "6":
175+
print("Saliendo de agenda ...")
176+
break
177+
case _:
178+
print("Operacion no soportada")
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
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,
6+
* recorrido, conversión a mayúsculas y minúsculas, reemplazo, división, unión,
7+
* interpolación, verificación...
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
11+
* para descubrir si son:
12+
* - Palíndromos
13+
* - Anagramas
14+
* - Isogramas
15+
*/ """
16+
17+
""" Operaciones con Strings """
18+
19+
import re
20+
from xmlrpc.client import Boolean
21+
22+
23+
my_string_1 = "Hola"
24+
my_string_2 = "Lucas"
25+
26+
# Concatenacion
27+
print(my_string_1 + " " + my_string_2)
28+
29+
# Repeticion
30+
print(my_string_2 * 5)
31+
32+
# Indexacion
33+
print(my_string_1[0] + my_string_2[1])
34+
35+
# Longitud
36+
print(len(my_string_1))
37+
# Slicing (partir la cadena de texto)
38+
print(my_string_1[1:3])
39+
print(my_string_2[1:])
40+
print(my_string_1[:-1])
41+
print(my_string_2[0:3])
42+
print(my_string_1[:2])
43+
44+
# Reemplazo
45+
print(my_string_1.replace("a", "x"))
46+
47+
# Busqueda
48+
print("h" in my_string_1)
49+
print("x" in my_string_2)
50+
51+
# Division
52+
print(my_string_2.split("c"))
53+
54+
# Mayusculas y minusculas
55+
print(my_string_1.upper())
56+
print(my_string_1.lower())
57+
print(my_string_1.capitalize())
58+
print(my_string_1.title())
59+
60+
61+
# Eliminacion de espacios (strip)
62+
print("Lucas Rebuffo".strip())
63+
64+
# Busqueda al principio y al final
65+
print(my_string_1.startswith("Ho"))
66+
print(my_string_2.endswith("as"))
67+
68+
# Busqueda de posicion
69+
print("lucasrebu@outlook.com".find("@"))
70+
print("lucasrebu@outlook.com".find("@"))
71+
print("lucasrebu@outlook.com".find("u@"))
72+
73+
# Busqueda de ocurrencias
74+
print("Lucas Rebuffo".count("f"))
75+
76+
# Formateo
77+
print("{} {} !".format(my_string_1, my_string_2))
78+
79+
# Interpolacion
80+
print(f"{my_string_1} {my_string_2} !")
81+
82+
# Transferencia de lista de caracteres
83+
lista_char = list(my_string_1)
84+
print(lista_char)
85+
print("-".join(lista_char))
86+
87+
# Transformacion numerica
88+
print(int("452"))
89+
print(float("452.2"))
90+
91+
# Comprobaciones
92+
print("151".isdecimal())
93+
print("151a".isalnum())
94+
print("a".isascii())
95+
print("def".isidentifier())
96+
97+
98+
""" * DIFICULTAD EXTRA (opcional):
99+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
100+
* para descubrir si son:
101+
* - Palíndromos
102+
* - Anagramas
103+
* - Isogramas
104+
*/ """
105+
106+
107+
def is_palindrome(cadena: str):
108+
return cadena[::-1].strip().lower() == cadena.strip().lower()
109+
110+
111+
def is_anagram(cadena1: str, cadena2: str):
112+
return sorted(cadena1.lower()) == sorted(cadena2.lower())
113+
114+
115+
def is_isogram(cadena: str):
116+
set_caracteres = set(cadena)
117+
lista = list(map(lambda char: cadena.count(char), set_caracteres))
118+
r = set(lista)
119+
return len(r) == 1
120+
121+
122+
def chequear_palabras(cadena1: str, cadena2: str):
123+
124+
print("Chequeo de palindromo: ")
125+
if is_palindrome(cadena1):
126+
print(f"{cadena1} es palindromo")
127+
else:
128+
print(f"{cadena1} NO es palindromo")
129+
if is_palindrome(cadena2):
130+
print(f"{cadena2} es palindromo")
131+
else:
132+
print(f"{cadena2} NO es palindromo")
133+
134+
print("----------------------------------------")
135+
136+
print("Chequeo de anagrama: ")
137+
if is_anagram(cadena1, cadena2):
138+
print(f"{cadena1} y {cadena2} son anagramas")
139+
else:
140+
print(f"{cadena1} y {cadena2} NO son anagramas")
141+
142+
print("----------------------------------------")
143+
144+
print("Chequeo de isograma: ")
145+
if is_isogram(cadena1):
146+
print(f"{cadena1} es isograma")
147+
else:
148+
print(f"{cadena1} NO es isograma")
149+
if is_isogram(cadena2):
150+
print(f"{cadena2} es isograma")
151+
else:
152+
print(f"{cadena2} NO es isograma")
153+
154+
print("----------------------------------------")
155+
print("----------------------------------------")
156+
157+
158+
chequear_palabras("amor", "roma")
159+
chequear_palabras("neuquen", "quenneu")
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
""" /*
2+
* EJERCICIO:
3+
* - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+
* su tipo de dato.
5+
* - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6+
* "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7+
* (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como
11+
* variables anteriormente.
12+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
13+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
14+
* se asigna a dos variables diferentes a las originales. A continuación, imprime
15+
* el valor de las variables originales y las nuevas, comprobando que se ha invertido
16+
* su valor en las segundas.
17+
* Comprueba también que se ha conservado el valor original en las primeras.
18+
*/ """

0 commit comments

Comments
 (0)