1
+ import os , platform
2
+
3
+ if (platform .platform ().startswith ("macOS" ) or platform .platform ().startswith ("Linux" )):
4
+ os .system ('clear' )
5
+ else :
6
+ os .system ('cls' )
7
+
8
+ """ * EJERCICIO:
9
+ * ¡Cada año celebramos el aDEViento! 24 días, 24 regalos para
10
+ * developers. Del 1 al 24 de diciembre: https://adviento.dev
11
+ *
12
+ * Dibuja un calendario por terminal e implementa una
13
+ * funcionalidad para seleccionar días y mostrar regalos.
14
+ * - El calendario mostrará los días del 1 al 24 repartidos
15
+ * en 6 columnas a modo de cuadrícula.
16
+ * - Cada cuadrícula correspondiente a un día tendrá un tamaño
17
+ * de 4x3 caracteres, y sus bordes serán asteríscos.
18
+ * - Las cuadrículas dejarán un espacio entre ellas.
19
+ * - En el medio de cada cuadrícula aparecerá el día entre el
20
+ * 01 y el 24.
21
+ *
22
+ * Ejemplo de cuadrículas:
23
+ * **** **** **** **** **** ****
24
+ * *01* *02* *03* *04* *05* *06*
25
+ * **** **** **** **** **** ****
26
+ *
27
+ * - El usuario seleccioná qué día quiere descubrir.
28
+ * - Si está sin descubrir, se le dirá que ha abierto ese día
29
+ * y se mostrará de nuevo el calendario con esa cuadrícula
30
+ * cubierta de asteríscos (sin mostrar el día).
31
+ *
32
+ * Ejemplo de selección del día 1
33
+ * **** **** ****
34
+ * **** *02* *03* ...
35
+ * **** **** ****
36
+ *
37
+ * - Si se selecciona un número ya descubierto, se le notifica
38
+ * al usuario."""
39
+
40
+ calendar = []
41
+ used_numbers = set ()
42
+ for i in range (6 ):
43
+ calendar .append ("****" )
44
+
45
+ for i in range (1 , 25 ):
46
+ day :str = f"*{ str (i ).zfill (2 )} *"
47
+ calendar .append (day )
48
+ if i % 6 == 0 :
49
+ for i in range (6 ):
50
+ calendar .append ("****" )
51
+
52
+ def show_calendar (calendar :list ):
53
+ for i in range (1 , len (calendar ) + 1 ):
54
+ print (calendar [i - 1 ], end = ' ' )
55
+ if i % 6 == 0 :
56
+ print ()
57
+
58
+ while True :
59
+ show_calendar (calendar )
60
+ number :str = input ("\n Introduzca el día del calendario del 1 al 24 o enter para salir: " )
61
+ if number == '' :
62
+ break
63
+
64
+ elif not number .isdigit or int (number ) > 24 or int (number ) < 1 :
65
+ print ("El dato debe ser numérico entre 1 y 24, intente de nuevo" )
66
+ continue
67
+
68
+ else :
69
+ target :str = number .zfill (2 )
70
+ for number in used_numbers :
71
+ if number == target :
72
+ print (f"El número { target } ya se ha seleccionado antes, intente con otro" )
73
+ continue
74
+ for j in range (len (calendar )):
75
+ if target in calendar [j ]:
76
+ calendar [j ] = "****"
77
+ used_numbers .add (target )
78
+
79
+
0 commit comments