Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import argparse
- import sys
- # Define main variables
- list1 = []
- list2 = []
- list3 = []
- def get_args():
- parser = argparse.ArgumentParser(
- description="""Caesar Encoder/Decoder""")
- parser.add_argument(
- '-a', '--action', type=str, choices=['encrypt', 'decrypt'], required=True)
- parser.add_argument(
- '-s', '--shift', type=int, help='Char. shift number', required=True)
- parser.add_argument(
- 'input_string', nargs='+', help='string to encrypt/decrypt')
- terminal_args = parser.parse_args()
- return terminal_args
- #TODO: limit args.shift range to 26
- def args_check():
- args = get_args()
- if args.input_string != "":
- return args
- else:
- print(str("Incorrect arguments passed on"))
- sys.exit()
- def normalize_input(string):
- string = string.upper()
- return string
- # Cypher function
- def cipher_this(string, cypher_shift):
- string = normalize_input(string)
- print(str("Input to encode is: ") + string)
- # Generate list1 from unicode string
- for letter in string:
- list1.append((ord(letter)))
- # From list1, add cypher shift to the list
- for element in list1:
- list2.append(cypher_shift + element)
- # convert list2 onto coded string
- for element in list2:
- list3.append(str(chr(element)))
- cyph_text = ''.join(list3)
- print(str("Encoded output is : ") + cyph_text)
- def decipher_this(string, cypher_shift):
- string = normalize_input(string)
- print(str("Input to decode is: ") + string)
- # Generate list1 from unicode string
- for letter in string:
- list1.append((ord(letter)))
- # From list1, add cypher shift to the list
- for element in list1:
- list2.append(element - cypher_shift)
- # convert list2 onto coded string
- for element in list2:
- list3.append(str(chr(element)))
- cyph_text = ''.join(list3)
- print(str("Decoded output is : ") + cyph_text)
- def main():
- print(str("Caesar Salad begin..."))
- args = args_check()
- string = str(args.input_string).strip("\'[]")
- shift = int(args.shift)
- action_to_do = str(args.action).strip("\'[]")
- if action_to_do == "encrypt":
- cipher_this(string, shift)
- else:
- decipher_this(string, shift)
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement