私は最近、オンライン コースを通じて Python でプログラミングを始めたばかりで、課題の 1 つで、文字列を rot13 でエンコードする必要がありました。私は maketrans メソッドを使用しましたが、すべて問題ありませんが、アルファベットを数字に「エンコード」する方法に興味があります。たとえば、アルファベットの各文字の値を数字に割り当てることはできますか? AZ = 1-26 ? 2桁を使用して回避する方法がわかりません。助けてください。ありがとうございました。
質問する
3405 次
2 に答える
1
ord()
および関数を使用して、chr()
文字を数字に、またはその逆に変換します。文字と数字の数字は ASCII 規格に対応しています。
>>> ord('A')
65
>>> chr(65)
'A'
それを 1 から 26 までの数にするには、64 を引くか、ord('@')
(64 も) を使用します。
別のオプションは、string.ascii_uppercase
変数を使用することです。これにより、0 ベースの文字の「インデックス」を見つけることができます。
>>> string.ascii_uppercase.index('B')
1
>>> string.ascii_uppercase.index('C')
2
>>> string.ascii_uppercase[3]
'D'
どちらの手法を使用しても、文字から数字へのマッピングを作成できます。おそらく次のとおりです。
>>> letters = {c: i for i, c in enumerate(string.ascii_uppercase)}
>>> letters['M']
12
于 2013-03-06T18:39:28.483 に答える
0
たとえば、アルファベットの各文字の値を数字に割り当てることはできますか? AZ = 1-26 ?
エンコードするには:
>>> ''.join('%02d' % (ord(c) - ord('A') + 1) for c in 'SECRET')
'190503180520'
デコードするには:
>>> encoded = '190503180520'
>>> ''.join(chr(int(encoded[i:i+2]) + ord('A') - 1) for i in range(0, len(encoded), 2))
'SECRET'
于 2013-03-06T18:40:39.310 に答える