From 182e3042f83b083d68ac4bf08c11bddd12851282 Mon Sep 17 00:00:00 2001 From: Aakash Dinkar <35952953+aakashdinkar@users.noreply.github.com> Date: Sun, 8 Mar 2020 11:34:21 +0530 Subject: [PATCH] update rot13.py (#1790) * update rot13.py * Update rot13.py * Type hints, doctests, URL to Wikipedia Co-authored-by: Christian Clauss --- ciphers/rot13.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/ciphers/rot13.py b/ciphers/rot13.py index a7b546511..7a5954f89 100644 --- a/ciphers/rot13.py +++ b/ciphers/rot13.py @@ -1,9 +1,19 @@ -def dencrypt(s, n): +def dencrypt(s: str, n: int=13): + """ + https://en.wikipedia.org/wiki/ROT13 + + >>> msg = "My secret bank account number is 173-52946 so don't tell anyone!!" + >>> s = dencrypt(msg) + >>> s + "Zl frperg onax nppbhag ahzore vf 173-52946 fb qba'g gryy nalbar!!" + >>> dencrypt(s) == msg + True + """ out = "" for c in s: - if c >= "A" and c <= "Z": + if "A" <= c <= "Z": out += chr(ord("A") + (ord(c) - ord("A") + n) % 26) - elif c >= "a" and c <= "z": + elif "a" <= c <= "z": out += chr(ord("a") + (ord(c) - ord("a") + n) % 26) else: out += c @@ -11,14 +21,16 @@ def dencrypt(s, n): def main(): - s0 = "HELLO" + s0 = input("Enter message: ") s1 = dencrypt(s0, 13) - print(s1) # URYYB + print("Encryption:", s1) s2 = dencrypt(s1, 13) - print(s2) # HELLO + print("Decryption: ", s2) if __name__ == "__main__": + import doctest + doctest.testmod() main()