-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcoder_decoder.py
More file actions
executable file
·53 lines (37 loc) · 1.51 KB
/
Copy pathcoder_decoder.py
File metadata and controls
executable file
·53 lines (37 loc) · 1.51 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python3
import argparse
def coder(phrase, rotations=3):
coded_phrase = ""
for letter in phrase:
if ord(letter) > 96 and ord(letter) < 123:
if (ord(letter) + rotations) > 122:
coded_phrase += chr((ord(letter) + rotations) - 26)
else:
coded_phrase += chr(ord(letter) + rotations)
else:
coded_phrase += letter
return coded_phrase
def decoder(phrase, rotations=3):
decoded_phrase = ""
for letter in phrase:
if ord(letter) > 96 and ord(letter) < 123:
if (ord(letter) - rotations) < 97:
decoded_phrase += chr((ord(letter) - rotations) + 26)
else:
decoded_phrase += chr(ord(letter) - rotations)
else:
decoded_phrase += letter
return decoded_phrase
def main():
roles = {'code': coder, 'decode': decoder}
parser = argparse.ArgumentParser(description='Code/Decode a Rot-N Cipher')
parser.add_argument('role', choices=roles,
help='Choose between code or decode the phrase')
parser.add_argument('phrase', help='Message to be coded or decoded. Use Quotes!')
parser.add_argument('-r', '--rotations', default=3, help='Number of shifts.\n'
'Default is the Caesar\'s cipher (Rot-3)')
args = parser.parse_args()
function = roles[args.role]
print('\n', function(args.phrase.lower(), int(args.rotations)), '\n')
if __name__ == '__main__':
main()