File tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed
Retos/Reto #24 - CIFRADO CÉSAR [Fácil]/python Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ Crea un programa que realize el cifrado César de un texto y lo imprima.
3+ También debe ser capaz de descifrarlo cuando así se lo indiquemos.
4+
5+ Te recomiendo que busques información para conocer en profundidad cómo
6+ realizar el cifrado. Esto también forma parte del reto.
7+ """
8+
9+ def cesar_cipher (
10+ text : str , shift : int , decipher : bool = False
11+ ) -> str :
12+ """
13+ Aplica el cifrado o descifrado César a un texto.
14+
15+ Parámetros:
16+ text (str): Texto a procesar.
17+ shift (int): Número de posiciones a desplazar en el alfabeto.
18+ decipher (bool): Si es True, se aplica el descifrado (desplazamiento inverso).
19+
20+ Retorna:
21+ str: Texto resultante tras aplicar el cifrado o descifrado.
22+
23+ Lanza:
24+ TypeError: Si el valor de `text` no es una cadena.
25+ """
26+
27+ if not isinstance (text , str ):
28+ raise TypeError ("Error. Solo se acepta texto como valor." )
29+
30+ result = ""
31+
32+ if decipher :
33+ shift *= - 1
34+
35+ for char in text :
36+ if char .isalpha ():
37+ point_code = ord (char )
38+ if "A" <= char <= "Z" :
39+ base = ord ("A" )
40+ elif "a" <= char <= "z" :
41+ base = ord ("a" )
42+ new_point_code = ((point_code - base ) + shift ) % 26 + base
43+ result += chr (new_point_code )
44+ else :
45+ result += char
46+
47+ return result
48+
49+
50+ if __name__ == "__main__" :
51+ print (cesar_cipher ("Hola Mundo Yz XA" , 2 ))
52+ print (cesar_cipher ("Jqnc Owpfq Ab ZC" , 2 , decipher = True ))
You can’t perform that action at this time.
0 commit comments