Curso-lenguaje-python/catch-all/02_scripts_descifrador_wargame/descifrador_wargame.py

145 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""
Lo siento, acabo de ver "Juegos de Guerras" y me he emocionado.
Este programa descifra un código de números y letras mayúsculas aleatorio.
El código se descifra letra por letra y número por número.
Se utiliza random para generar los números y letras aleatorias,
para que tenga más emoción.
"""
import os
import random
def code_clear():
"""
Crear un código de números y letras mayúsculas aleatorio
"""
os.system('clear')
def number_generate():
"""
Genera un número aleatorio entre 0 y 9
"""
number_random = str(random.randint(0, 9))
# number_random = chr(random.choice(string.ascii_letters + string.digits))
return number_random
def upper_letter_generate():
"""
Genera una letra mayúscula aleatoria entre A y Z
"""
letter_random = chr(random.randint(65, 90))
return letter_random
def lower_letter_generate():
"""
Genera una letra minúscula aleatoria entre a y z
"""
letter_random = chr(random.randint(97, 122))
return letter_random
def mecanografiar(msg):
for i in range(0, len(msg)):
code_clear()
print(msg[:i])
os.system('sleep .1')
def descifrador(codigo):
"""
Descifra el código
"""
numero_caracteres = len(codigo)
codigo_decode = " " * numero_caracteres
while True:
for i in range(0, len(codigo)):
if codigo[i] == codigo_decode[i]:
codigo_decode = codigo_decode[:i] + \
codigo[i] + codigo_decode[i + 1:]
elif codigo[i].isalpha():
if codigo[i].isupper():
codigo_decode = codigo_decode[:i] + \
upper_letter_generate() + codigo_decode[i + 1:]
else:
codigo_decode = codigo_decode[:i] + \
lower_letter_generate() + codigo_decode[i + 1:]
elif codigo[i].isdigit():
codigo_decode = codigo_decode[:i] + \
number_generate() + codigo_decode[i + 1:]
else:
codigo_decode[i] = " "
code_clear()
print(codigo_decode)
os.system('sleep .1')
if codigo_decode == codigo:
break
code_clear()
return f"El código descifrado es: {codigo_decode}"
def mensaje_final():
os.system('sleep 3')
mecanografiar("Los mísiles nucleares se lanzarán en 5 segundos. ")
os.system('sleep 1')
for i in range(5, 0, -1):
code_clear()
print(i)
os.system('sleep 1')
mecanografiar("Los mísiles nucleares se han lanzado. ")
os.system('sleep 3')
mecanografiar("Los mísiles nucleares han impactado. ")
os.system('sleep 1.5')
mecanografiar("La humanidad ha sido destruida. ")
os.system('sleep 1.5')
mecanografiar("Fin del programa. ")
os.system('sleep 1.5')
mecanografiar("¡Hasta la vista, baby! 💋💋💋 ")
def main():
"""
Función principal
"""
code_clear()
print(("#"*36) + "\nBIENVENIDO AL DESCIFRADOR DE CÓDIGOS\n" + ("#"*36))
CODIGO = input("Introduzca el código a descifrar: ")
print(descifrador(CODIGO))
mensaje_final()
if __name__ == "__main__":
main()