为什么 ROT 13 在空格中显示 g?
Why is ROT 13 displaying g in spaces?
我正在编写基于 ROT13 算法的代码,但是当我收到消息 "ROT ALGORITHM" 时,它显示为 "EBGgNYTBEVGUZ"。我不确定 'g' 是否错误,因为它是 ROT 和 ALGORITHM 之间的 space?
def rot13(message,shift):
result = ""
for i in range(len(message)):
char = message[i]
if (char.isupper()):
result += chr((ord(char) + shift-13) % 26 + 65)
else:
result += chr((ord(char) + shift-13) % 26 + 97)
return result
shift = 13
message = "ROT ALGORITHM"
print("Shift:", shift)
print(message)
print(rot13(message,shift))
从 ROT13 spec 开始,只有字母会受到算法的影响,这里因为 space 不是 upper()
你去 else 部分
您可以处理 2 分钟的用例:小写和大写,只需使用字母表进行旋转
from string import ascii_lowercase, ascii_uppercase
def rot13(message, shift):
result = ""
for char in message:
if char in ascii_uppercase:
result += ascii_uppercase[(ascii_uppercase.index(char) + shift) % 26]
elif char in ascii_lowercase:
result += ascii_lowercase[(ascii_lowercase.index(char) + shift) % 26]
else:
result += char
return result
我正在编写基于 ROT13 算法的代码,但是当我收到消息 "ROT ALGORITHM" 时,它显示为 "EBGgNYTBEVGUZ"。我不确定 'g' 是否错误,因为它是 ROT 和 ALGORITHM 之间的 space?
def rot13(message,shift):
result = ""
for i in range(len(message)):
char = message[i]
if (char.isupper()):
result += chr((ord(char) + shift-13) % 26 + 65)
else:
result += chr((ord(char) + shift-13) % 26 + 97)
return result
shift = 13
message = "ROT ALGORITHM"
print("Shift:", shift)
print(message)
print(rot13(message,shift))
从 ROT13 spec 开始,只有字母会受到算法的影响,这里因为 space 不是 upper()
你去 else 部分
您可以处理 2 分钟的用例:小写和大写,只需使用字母表进行旋转
from string import ascii_lowercase, ascii_uppercase
def rot13(message, shift):
result = ""
for char in message:
if char in ascii_uppercase:
result += ascii_uppercase[(ascii_uppercase.index(char) + shift) % 26]
elif char in ascii_lowercase:
result += ascii_lowercase[(ascii_lowercase.index(char) + shift) % 26]
else:
result += char
return result