|
| 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