Ara3210 / Proyecto-Fundamentos-de-programacion-2023-2024

0 stars 0 forks source link

Primera parte del proyecto #1

Open Ara3210 opened 10 months ago

Ara3210 commented 10 months ago

def cifrado(msj,n): msjf = '' for i in msj: m = abc.index(i)

    if m+int(n) > len(abc):
        msjf = msjf + abc[m+int(n)-len(abc)]
    else:
        msjf = msjf + abc[m+int(n)]
return msjf

def cifradoporarchivo(n): archivo =open('mensajes.txt') for linea in archivo: msj1 = cifrado(linea.rstrip(),n) msj2 = cifrado(msj1,4) print(msj2) guardarCifrado(msj2) archivo.close()

def guardarCifrado(msj): a = "esto es una prueba" archivo = open('mensajes_cifrados.txt',"a",) msj = msj+"|"+a+"|puntos de seguridad|cantidad de traslacion| primera codificacion|digito de la cedula| \n" archivo.writelines(msj) archivo.close()

abc ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*,.?¿, ' x = -1 msj = '' n = 0 while x != '0': print('Seleccione la accion a realizar:') print('1. ingresar mensaje mnaualmente.') print('2. leer mensaje de archivo.') print('3. cifrar mensaje.') print('4. descifrar mensaje.') print('5. exportar mensaje.') print('0. salir.') x = input() print(x,type(x)) if x == '1': print('ingrese el mensaje') msj = input() elif x == '2': print('Ingrese un numero para el cifrado') n = input() cifradoporarchivo(n) elif x == '3': print('Ingrese un numero para el cifrado') n = input() msj1 = cifrado(msj,n) print(msj1) msj2 = cifrado(msj1,4) print(msj2, type(msj2)) elif x == '4': print(x) elif x == '5': print(x) else: print('Ingrese una opcion valida')

print('Hasta luego')

Ara3210 commented 10 months ago

Andre me falta agregar los comentarios , pero esos los tengo en mi cuaderno , dame un chance

andre08h commented 10 months ago

def clasificacion_complejidad(puntos): if puntos <= 15: return "Debil" elif 15 < puntos <= 20: return "Moderado" elif 21 <= puntos <= 35: return "Bueno" elif 36 <= puntos <= 99: return "Excelente" else: return "Indecifrable"

def calcular_complejidad(mensaje): complejidad = len(mensaje)

# Verificar si hay minúsculas en el mensaje, se utiliza any para ver si por lo menos hay una 
if any(c.islower() for c in mensaje):
    complejidad += 1

# Se suma un punto por cada mayúscula en el mensaje
complejidad += sum(1 for c in mensaje if c.isupper())

# Contar los caracteres especiales y sumar puntos según tenga 1 o mas de 1 caracter especial
caracteres_especiales = "!@#$%^&*()-_+=[]{}|;:'\",.<>/?"
cantidad_caracteres_especiales = sum(1 for c in mensaje if c in caracteres_especiales)

if cantidad_caracteres_especiales == 1:
    complejidad += 3
elif cantidad_caracteres_especiales > 1:
    complejidad += 2 * cantidad_caracteres_especiales

# Verificar si hay dos números consecutivos, letras repetidas seguidas o más de 1 espacio en blanco consecutivo
for i in range(len(mensaje)-1):
    if mensaje[i].isdigit() and mensaje[i+1].isdigit():
        complejidad -= 5
        break
    elif mensaje[i].isalpha() and mensaje[i] == mensaje[i+1]:
        complejidad -= 5
        break
    elif mensaje[i].isspace() and mensaje[i+1].isspace():
        complejidad -= 5
        break

return complejidad

Leer el mensaje desde un archivo

with open("archivo.txt", "r") as archivo: mensaje = archivo.read()

puntos_de_complejidad = calcular_complejidad(mensaje) nivel_complejidad = clasificar_nivel_complejidad(puntos_de_complejidad)

print(f"La complejidad del mensaje es: {puntos_de_complejidad}") print(f"Nivel de complejidad: {nivel_complejidad}")

andre08h commented 10 months ago

aca esta la parte de la clasificacion y el calculo de la complejidad