我需要創建一個函數,用字母后面的13個字母替換一個字母(不使用編碼)。我對Python相對來說比較陌生,所以我花了一段時間才找出一種不使用Encode的方法。ROT 13密碼:創建函數Python
這是我到目前爲止。當我用它來輸入一個像「hello」這樣的正常單詞時,它可以工作,但是如果我通過一個帶有特殊字符的句子,我不知道如何包含字母表中的字母以及跳過數字,空格或特殊字符完全。
def rot13(b):
b = b.lower()
a = [chr(i) for i in range(ord('a'),ord('z')+1)]
c = []
d = []
x = a[0:13]
for i in b:
c.append(a.index(i))
for i in c:
if i <= 13:
d.append(a[i::13][1])
elif i > 13:
y = len(a[i:])
z = len(x)- y
d.append(a[z::13][0])
e = ''.join(d)
return e
編輯
我嘗試使用.isalpha(),但這似乎並沒有爲我工作 - 字符複製出於某種原因,當我使用它。以下格式是否正確:
def rot13(b):
b1 = b.lower()
a = [chr(i) for i in range(ord('a'),ord('z')+1)]
c = []
d = []
x = a[0:13]
for i in b1:
if i.isalpha():
c.append(a.index(i))
for i in c:
if i <= 12:
d.append(a[i::13][1])
elif i > 12:
y = len(a[i:])
z = len(x)- y
d.append(a[z::13][0])
else:
d.append(i)
if message[0].istitle() == True:
d[0] = d[0].upper()
e = ''.join(d)
return e
也許如果檢查'character.isalpha()'會有幫助嗎? 「character」被替換爲你用來容納角色的任何可變因子 –
這聽起來像是一個用正則表達式很容易解決的問題。 –
嗨@LukeK我嘗試使用character.isalpha()如你所建議的。你能看看我的編輯,讓我知道我做錯了什麼?出於某種原因,當我使用.isalpha() –