Skip to content

Commit 2c64d0e

Browse files
authored
Merge pull request mouredev#7313 from rigo93acosta/main
mouredev#47 - Python
2 parents 7702803 + 32dcb69 commit 2c64d0e

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
"""
2+
/*
3+
* EJERCICIO:
4+
* ¡Cada año celebramos el aDEViento! 24 días, 24 regalos para
5+
* developers. Del 1 al 24 de diciembre: https://adviento.dev
6+
*
7+
* Dibuja un calendario por terminal e implementa una
8+
* funcionalidad para seleccionar días y mostrar regalos.
9+
* - El calendario mostrará los días del 1 al 24 repartidos
10+
* en 6 columnas a modo de cuadrícula.
11+
* - Cada cuadrícula correspondiente a un día tendrá un tamaño
12+
* de 4x3 caracteres, y sus bordes serán asteríscos.
13+
* - Las cuadrículas dejarán un espacio entre ellas.
14+
* - En el medio de cada cuadrícula aparecerá el día entre el
15+
* 01 y el 24.
16+
*
17+
* Ejemplo de cuadrículas:
18+
* **** **** ****
19+
* *01* *02* *03* ...
20+
* **** **** ****
21+
*
22+
* - El usuario seleccioná qué día quiere descubrir.
23+
* - Si está sin descubrir, se le dirá que ha abierto ese día
24+
* y se mostrará de nuevo el calendario con esa cuadrícula
25+
* cubierta de asteríscos (sin mostrar el día).
26+
*
27+
* Ejemplo de selección del día 1
28+
* **** **** ****
29+
* **** *02* *03* ...
30+
* **** **** ****
31+
*
32+
* - Si se selecciona un número ya descubierto, se le notifica
33+
* al usuario.
34+
*/
35+
"""
36+
37+
class AdventCalendar:
38+
39+
def __init__(self):
40+
self.days = set(range(1,25))
41+
42+
def draw_calendar(self):
43+
for row in range(4):
44+
for x_row in range(3):
45+
for x_col in range(6):
46+
if x_row == 1:
47+
val_day = row * 6 + x_col + 1
48+
if val_day not in self.days:
49+
print('*'*4, end=" ")
50+
else:
51+
print(f'*{row * 6 + x_col + 1:>02}*', end=" ")
52+
else:
53+
print('*'*4, end=" ")
54+
print()
55+
print()
56+
57+
58+
def select_day(self, day) -> bool:
59+
60+
if day in self.days:
61+
self.days.discard(day)
62+
return True
63+
return False
64+
65+
if __name__ == "__main__":
66+
67+
calendar = AdventCalendar()
68+
69+
while True:
70+
day = input("Seleccione un dia: ('s' para salir) ")
71+
if day.isnumeric() and 1 <= int(day) <= 24:
72+
day = int(day)
73+
if calendar.select_day(day):
74+
print(f"Has abierto el día {day}!\n")
75+
calendar.draw_calendar()
76+
else:
77+
print("El día {day} ya fue descubierto!\n")
78+
else:
79+
if day == "s":
80+
break
81+
else:
82+
print("El valor ingresado no es un número"+
83+
" o no está en el rango de 1 a 24.\n"
84+
)
85+

0 commit comments

Comments
 (0)