Skip to content

Commit a746f76

Browse files
authored
Merge pull request mouredev#7668 from Giulianovfz/main
mouredev#49 - Python
2 parents 60a5fb4 + 6f5206e commit a746f76

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
"""
2+
* EJERCICIO:
3+
* Papá Noel tiene que comenzar a repartir los regalos...
4+
* ¡Pero ha olvidado el código secreto de apertura del almacén!
5+
*
6+
* Crea un programa donde introducir códigos y obtener pistas.
7+
*
8+
* Código:
9+
* - El código es una combinación de letras y números aleatorios
10+
* de longitud 4. (Letras: de la A a la C, Números: del 1 al 3)
11+
* - No hay repetidos.
12+
* - Se genera de manera aleatoria al iniciar el programa.
13+
*
14+
* Usuario:
15+
* - Dispone de 10 intentos para acertarlo.
16+
* - En cada turno deberá escribir un código de 4 caracteres, y
17+
* el programa le indicará para cada uno lo siguiente:
18+
* - Correcto: Si el caracter está en la posición correcta.
19+
* - Presente: Si el caracter existe, pero esa no es su posición.
20+
* - Incorrecto: Si el caracter no existe en el código secreto.
21+
* - Deben controlarse errores de longitud y caracteres soportados.
22+
*
23+
* Finalización:
24+
* - Papa Noel gana si descrifra el código antes de 10 intentos.
25+
* - Pierde si no lo logra, ya que no podría entregar los regalos.
26+
"""
27+
import random
28+
29+
30+
def generar_clave():
31+
"""
32+
Se genera la clave que debe descubrir el usuario, y solo tiene 4 caracteres
33+
"""
34+
35+
letras = ["A", "B", "C"]
36+
numeros = [1, 2, 3]
37+
union = letras + numeros
38+
39+
return random.sample(union, k=4)
40+
41+
42+
def validar_clave(clave, ingreso):
43+
"""
44+
Evalua caracter por caracter para saber su estado si es correcto, presente o incorrecto
45+
"""
46+
valida_caracter = []
47+
48+
def evaluar(valor):
49+
50+
if valor in clave and (ingreso.index(str(valor)) == clave.index(valor)):
51+
valida_caracter.append('Correcto')
52+
elif valor in clave:
53+
valida_caracter.append('Presente')
54+
else:
55+
valida_caracter.append('Incorrecto')
56+
57+
for valor in ingreso:
58+
59+
if valor.isdigit():
60+
numero = int(valor)
61+
evaluar(numero)
62+
else:
63+
evaluar(valor)
64+
65+
return valida_caracter
66+
67+
68+
def main():
69+
"""
70+
Se le solicita al usuario ingresar una contraseña para realizar su validación
71+
"""
72+
clave = generar_clave()
73+
i = 0
74+
75+
mensaje = '''\n\tDebes ayudar al viejo pascuero; se le olvidó la contraseña del almacén.
76+
Tienes que descubrir la contraseña, la cual \033[1;37;47mestá compuesta por letras de la A a la C \033[0;m
77+
\033[1;37;47my por números del 1 al 3.\033[0;m Tiene una longitud de 4 caracteres.
78+
A continuación, se solicitará que ingreses la clave, tienes solo 10 intentos.
79+
'''
80+
print(mensaje)
81+
82+
while i < 10:
83+
i += 1
84+
print(f'\n\tIntento {i} |{"»"*40}')
85+
clave_ingresada = input(
86+
'\n\t• Ingresa la clave(de 4 Caracteres):').upper()
87+
88+
if len(clave_ingresada) > 5:
89+
print(
90+
'\n\nError, desperdiciaste una oportunidad, recuerda ingresa solo 4 Caracteres\n')
91+
else:
92+
93+
validacion = validar_clave(clave, clave_ingresada)
94+
95+
print(f'\n\t{validacion}\n')
96+
97+
if i == 10 and (validacion.count("Correcto") != 4):
98+
print(
99+
'\n\tLamentablemente, finalizaron los intentos para descubrir la contraseña del almacén')
100+
print(
101+
'\n\tPor lo tanto, el viejo pascuero no puede entregar los regalos.')
102+
103+
elif validacion.count("Correcto") == 4:
104+
print(
105+
'\n\t¡Felicitaciones! Lograste adivinar la clave, pueden abrir el almacén\n')
106+
break
107+
108+
109+
if __name__ == '__main__':
110+
main()

0 commit comments

Comments
 (0)