アルファベットの文字の後にアルファベットの13文字を置き換える(エンコードを使用しない)関数を作成する必要があります。私はPythonには比較的新しいので、Encodeを使わないでこれを行う方法を理解するのはしばらく時間がかかりました。ROT 13 Cipher:関数のPythonを作成する
これまで私がこれまで持っていたことは次のとおりです。これを使って「こんにちは」のような普通の単語を入力すると機能しますが、特殊文字で文章を通すとどうなるのでしょうかJUSTにはアルファベットの文字とスキップ番号、スペースまたは特殊文字が含まれています完全に。
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
EDIT
私は.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()を使うとたくさん複製されています。 –