Skip to content

Commit 2bb603d

Browse files
authored
Merge pull request mouredev#7345 from neslarra/patch-67
Reto# 49 - python
2 parents 934c4d7 + 5c83a8f commit 2bb603d

File tree

1 file changed

+69
-0
lines changed
  • Roadmap/49 - EL ALMACÉN DE PAPÁ NOEL/python

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
r"""
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+
from random import randint
28+
characters = ["a", "1", "b", "2", "c", "3"]
29+
tries = 10
30+
access_granted = False
31+
32+
33+
def create_passkey() -> str:
34+
pass_characters = characters.copy()
35+
passkey = ""
36+
while passkey.__len__() < 4:
37+
character = pass_characters.pop(randint(0, pass_characters.__len__() - 1))
38+
passkey += character
39+
40+
return passkey
41+
42+
43+
def validate_entry(word: str, passkey: str) -> bool:
44+
if word == passkey:
45+
print("Acceso Permitido.")
46+
return True
47+
if word.__len__() != 4:
48+
print("Error: la longitud DEBE ser igual a cuatro caracteres.")
49+
return False
50+
if [x for x in word if x in characters].__len__() != 4:
51+
print("Error: solo son válidos los carateres a, b, c, 1, 2, 3")
52+
return False
53+
for x, y in zip(word, passkey):
54+
if x not in passkey:
55+
print(f"{x} no es parte de la clave")
56+
elif x == y:
57+
print(f"{x} está en la posioción CORRECTA")
58+
else:
59+
print(f"{x} está en la posioción INCORRECTA")
60+
print("Acceso DENEGADO")
61+
return False
62+
63+
64+
passkey = create_passkey()
65+
# print(passkey)
66+
while tries > 0 and not access_granted:
67+
word = input(f"Ingrese la palabra clave (intento# {11 - tries}): ")
68+
access_granted = validate_entry(word, passkey)
69+
tries -= 1

0 commit comments

Comments
 (0)