Skip to content

Commit 5426400

Browse files
authored
Merge pull request mouredev#3333 from neslarra/patch-29
Reto# 18 - python
2 parents b0693f2 + d7d06a1 commit 5426400

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
"""
2+
EJERCICIO:
3+
Utilizando tu lenguaje crea un conjunto de datos y realiza las siguientes
4+
operaciones (debes utilizar una estructura que las soporte):
5+
- Añade un elemento al final.
6+
- Añade un elemento al principio.
7+
- Añade varios elementos en bloque al final.
8+
- Añade varios elementos en bloque en una posición concreta.
9+
- Elimina un elemento en una posición concreta.
10+
- Actualiza el valor de un elemento en una posición concreta.
11+
- Comprueba si un elemento está en un conjunto.
12+
- Elimina todo el contenido del conjunto.
13+
14+
DIFICULTAD EXTRA (opcional):
15+
Muestra ejemplos de las siguientes operaciones con conjuntos:
16+
- Unión.
17+
- Intersección.
18+
- Diferencia.
19+
- Diferencia simétrica.
20+
"""
21+
22+
print(f"## Explicación {'#' * 30}\n")
23+
24+
print(f"""Un conjunto es una colección no ordenada de objetos únicos => no tiene índice, ni primero ni último.
25+
Se le pueden agregar elementos (método add), eliminar elementos (método remove) o eliminar TODOS los elementos (método clear).
26+
Un conjunto es iterable.
27+
Un conjunto vacío se puede crear con: "vacio = set()", PERO no con: "vacio = {{}}" <= lo cual crea un diccionario vacío.
28+
También se pueden crear asignando elementos directamente al conjunto: "numeros = {{1, 2, 3, 4, 5}}"
29+
Si al conjunto le pasamos elementos "repetidos", se filtrarán las repeteciones: "numeros = {{1, 2, 3, 1, 3}}" => queda como: "numeros = {{1, 2, 3}}"
30+
Tiene métodos para ejecutar operaciones de conjunto: intersection, union, issubset (incluído), issuperset (incluye), symmetric_difference (unión
31+
excluyente), etc, las cuales se pueden explorar con la función "dir(set())"
32+
""")
33+
34+
cero = set()
35+
primos = set()
36+
no_primos = set()
37+
38+
cero.add(0)
39+
40+
primos.add(1)
41+
primos.add(2)
42+
primos.add(3)
43+
primos.add(5)
44+
primos.add(7)
45+
46+
no_primos.add(4)
47+
no_primos.add(6)
48+
no_primos.add(8)
49+
no_primos.add(9)
50+
51+
digitos = cero.union(primos).union(no_primos)
52+
53+
print(f"Conjuntos:\n\tCero: {cero}\n\tPrimos: {primos}\n\tNo primos {no_primos}\n\tDígitos: {digitos}\n")
54+
print(f"Elementos comunes por intersección: {cero.intersection(primos).intersection(no_primos).__len__()}\n")
55+
56+
digitos = digitos.union({2, 4, 5, 7, 11, 14, 15})
57+
print(f"Agrego más números a digitos {digitos}\n")
58+
print("Subconjuntos:")
59+
print(f"\tPrimos está incluído en dígitos: {primos.issubset(digitos)}\n\tDígitos incluye no primos: {digitos.issuperset(no_primos)}")
60+
print("También podemos usar operadores:")
61+
print(f"\tPrimos está incluído en dígitos: {primos < digitos}\n\tDígitos incluye no primos: {no_primos < digitos}\n")
62+
print(f"Se puede crear un conjunto por comprehensión:")
63+
pares_mayores = set(x for x in digitos if (x > 9) and (x % 2 == 0))
64+
impares_mayores = {x for x in digitos if (x > 9) and (x % 2 == 1)}
65+
print(f"\tPares mayores: {pares_mayores}\n\tImpares mayores: {impares_mayores}\n")
66+
print("Se puede itarar (recorro la union de los conjuntos pares e impoares mayores y los elimino de digitos):")
67+
for n in pares_mayores.union(impares_mayores):
68+
digitos.remove(n)
69+
print(f"\t{digitos}")
70+
print("\nElimino TODOS los elementos de pares e impares mayores:")
71+
pares_mayores = pares_mayores.clear()
72+
impares_mayores = impares_mayores.clear()
73+
print(f"\tpares_mayore = {pares_mayores}")
74+
print(f"\timpares_mayores = {impares_mayores}\n")
75+
print("Un conjunto puede ser inmutable: digitos = frozenset(digitos)")
76+
digitos = frozenset(digitos)
77+
try:
78+
digitos.add(10)
79+
except Exception as e:
80+
print(f"\t{e.__str__()}\n")
81+
print(f"Teniendo digitos = {digitos}, primos = {primos} y no_primos = {no_primos}")
82+
print(f"Intersección:\n\t{digitos.intersection(primos)}")
83+
print(f"Unión:\n\t{digitos.union(no_primos)}")
84+
print(f"Diferencia:\n\t{digitos.difference(primos)}")
85+
print(f"Unión exclusiva:\n\t{digitos.symmetric_difference(no_primos)}")
86+
87+
88+
print(f"\n## Dificultad extra {'#' * 30}\nIncluída en la explicación!!!")

0 commit comments

Comments
 (0)