Skip to content

Commit b59a307

Browse files
authored
Merge pull request #7541 from edisonlmg/main
#49 y #50 - Python
2 parents bf04c4d + 244b561 commit b59a307

File tree

2 files changed

+157
-0
lines changed

2 files changed

+157
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#=======================================================================================================================
2+
# 49 El almacen de Papá Noel
3+
#=======================================================================================================================
4+
5+
# Importar librerias
6+
import random
7+
import re
8+
9+
# Expresion regular para password
10+
pattern = r'^(?!.*(.).*\1)[ABC123]{4}$'
11+
12+
# Generar password aleatorio
13+
psw = ''.join(random.sample('ABC123', k=4))
14+
15+
# Inicio de juego
16+
print('''
17+
\n¡Bienvenido Papá Noel, es hora de repartir regalos!
18+
\nPara abrir al almacén de juguetes digita la clave de ingreso
19+
(tienes 10 intentos).
20+
\nPista: La contraseña debe contener 4 caracteres sin repeticiones y solo acepta
21+
los valores A,B,C,1,2 y 3.
22+
''')
23+
24+
# Inicio de bucle
25+
26+
intento = 0
27+
28+
while intento <= 10:
29+
30+
# Iniciar contador
31+
intento += 1
32+
33+
# Si se excedio de 10 intentos terminar el juego
34+
if intento > 10:
35+
print('''
36+
\n¡Oh, no. Papá Noel has olvidado la contraseña!
37+
Ya no te quedan más intentos.
38+
''')
39+
break
40+
41+
# Solicitar el ingreso de un password
42+
print(f'\nIntento n.° {intento}:')
43+
psw_in = input('\nIngresa contraseña: ').upper()
44+
45+
# Comprobar si el passwor ingresado es valido
46+
if bool(re.match(pattern, psw_in)):
47+
pass
48+
else:
49+
print('''
50+
\nLa contarseña ingresada no es válida. La contraseña debe contener 4
51+
caracteres sin repeticiones y solo acepta los valores A,B,C,1,2 y 3.
52+
''')
53+
continue
54+
55+
# Si el password fue valido comprobar si es el correcto
56+
if psw_in == psw:
57+
print('''
58+
\n La contraseña es correcta.
59+
\n¡Felicidades, a repartir juguetes!
60+
''')
61+
break
62+
else: # Si el password es incorrecto dar las pistas por cada caracter
63+
print(f'''
64+
\nLa contraseña es incorrecta. Pero descuida, te doy unas pistas:
65+
''')
66+
for x, y in zip(psw_in, psw):
67+
if x == y:
68+
print(f'\n{x}: Correcto')
69+
elif x in psw:
70+
print(f'\n{x}: Presente')
71+
else:
72+
print(f'\n{x}: Incorrecto')
73+
print('\n¡Vuelve a intentarlo, Papá Noel!')
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import pandas as pd
2+
3+
print('''\n
4+
#=======================================================================================================================
5+
# 50 - Planificador de objetivos de año nuevo
6+
#=======================================================================================================================
7+
''')
8+
9+
print('''
10+
Te ayudaré a planificar tus objetivo para el nuevo año.
11+
12+
Tus objetivos deben seguir el siguiente modelo:
13+
- Meta: Leer libros
14+
- Cantidad: 12
15+
- Unidades: libros
16+
- Plazo (en meses): 12 (máximo 12)
17+
18+
Por favor ingresa la información necesaria y sigue las indicaciones:
19+
''')
20+
21+
objectives = pd.DataFrame()
22+
count = 0
23+
24+
while count <= 10:
25+
26+
count += 1
27+
28+
if count > 10:
29+
print('Has ingresado el numero maximo de objetivos.')
30+
break
31+
32+
print(f'''
33+
Ingresa informacion del objetivo {count}:
34+
''')
35+
36+
objective = {}
37+
38+
objective['Meta'] = [input('Nombre de la meta: ')]
39+
objective['Cantidad'] = [int(input('Cantidad: '))]
40+
objective['Unidad'] = [input('Unidad de medida: ')]
41+
objective['Plazo'] = [int(input('Plazo: '))]
42+
43+
objectives = pd.concat([objectives, pd.DataFrame(objective)], ignore_index=True)
44+
45+
action = int(input('''
46+
Para ingresar el siguiente objetivo digita 0.
47+
Para terminar digita 1.
48+
'''))
49+
50+
if action > 0:
51+
break
52+
53+
objectives['Frecuencia'] = objectives['Cantidad'] / objectives['Plazo']
54+
55+
mounths = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Setiembre','Octubre','Noviembre','Diciembre']
56+
57+
mounth_num = 0
58+
59+
text = ''
60+
61+
for mounth in mounths[:objectives['Plazo'].max()]:
62+
63+
mounth_num += 1
64+
65+
text += f'\n{mounth}:'
66+
67+
for index, row in objectives.iterrows():
68+
if mounth_num <= row['Plazo']:
69+
text += f'\n{index+1}. {objectives['Meta'][index]} ({objectives['Frecuencia'][index]} {objectives['Unidad'][index]}/mes): Total: {objectives["Cantidad"][index]}'
70+
else:
71+
pass
72+
73+
print(f'\nFelicidades, aquí tienes tu planificación de objetivos:\n{text}')
74+
75+
save = input('\n¿Desea exportar su planificación (SI/NO)?: ').upper()
76+
77+
if save == 'SI':
78+
with open("planificacion_2025.txt", "w") as archivo:
79+
archivo.write(text)
80+
81+
print('Archivo exporta exitosamente ¡Adios!')
82+
83+
else:
84+
print('\nNo hay problema ¡Adios!')

0 commit comments

Comments
 (0)