つまり、基本的に、スタンザでいっぱいのテキストドキュメントを取得し、各スタンザの最初の行の命令を使用してそれらをデコードし、それを使用して後続の各行の暗号をデコードするこのコードがあります。サンプルは次のようになります。
-25 + 122-76
?ST ^ jT ^ jLj_P ^ _jZQj_SPjTY [`_jQTWPx?ST ^ jT ^ j_SPj ^ PNZYOjWTYPx+ 123 + 12 + 1234
0A:MXPBEEXA:II> GXGHPw
これは、最初の行に整数を追加し、各ASCII文字をその分シフトすることによって解読されます。これまでの私のコードは次のようになります。
#Here I define the Shift function that will take a character, convert it to its ASCII numeric value, add N to it and return the ASCII character.
def Shift(char, N):
A = ord(char)
A += N
A = chr(A)
return A
#Here's the code I have that opens and reads a file's first line as instructions, evaluates the numeric value of that first line, throws rest into a list and runs the Shift helper function to eval the ASCII characters.
def driver(filename):
file = open(filename)
line = file.readline()
file = file.readlines()
N = eval(line)
codeList = list(file)
for char in codeList:
newChar = Shift(char, N)
codeList[char] = codeList[newChar]
print str(codeList)
さて、私の質問は、スタンザのすべての空白行の後にコードを繰り返すにはどうすればよいですか?また、ASCII範囲32(スペース)および126(〜)内でのみ文字をシフトさせるにはどうすればよいですか?また、これはPython2.7.3を使用しています