簡體   English   中英

為什么 ROT 13 在空格中顯示 g?

[英]Why is ROT 13 displaying g in spaces?

我正在編寫基於 ROT13 算法的代碼,但是當我將消息顯示為“ROT ALGORITHM”時,它顯示為“EBGgNYTBEVGUZ”。 我不確定“g”是否是錯誤的,因為它是 ROT 和 ALGORITHM 之間的空格?

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 規范,只有字母應該受算法影響,這里因為空格不是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM