-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCaesar_Cipher_En.py
More file actions
29 lines (22 loc) · 1.42 KB
/
Caesar_Cipher_En.py
File metadata and controls
29 lines (22 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#Take a string and an interger shift value
#Return Encode string
def caesar_cipher(text, shift):
encrypted = []# create a list to hold the encrypted characters as they are processed
for char in text: #Iterate over each character of the input string
if char.isalpha():#Check if character is an alphabetic letter, ignoring number and punctuation etc
shift_amount = shift % 26 #Normalise the shift to a value between 0 and 25
new_ord = ord(char) + shift_amount #ord is a function used to convert character to Unicode int
if char.islower():#Check if the char is lowercase
if new_ord > ord("z"):#Ensuring that if the new Unicode+shift exceed z
new_ord -=26 # -26 is wrap around the alphabet
else: #handle uppercase senario
if new_ord > ord("Z"):
new_ord -=26
encrypted.append(chr(new_ord)) #chr() is a converter from unicode to character and append it into the list
else: #If the character is not alphabetic then put it back to the list unchanged
encrypted.append(char)
return "".join(encrypted) #Convert the list of character back into a single string and returns it
text = input("Enter a string: ")
shift = int(input("Enter number of shift: "))
encoded_text = caesar_cipher(text, shift)
print(f"The encoded text is {encoded_text}")