0

我有一个程序可以解码一个凯撒密码和几个多行文本文件来解码。

根据我的讲师代码检查器,文本后总是有一个空行,但是当我自己运行代码时,我什么也没看到。

删除最后一个字符只会删除文本中的最后一个字母或数字,而不是换行符。

这是我的代码:

import sys
import string
import collections

ciphertext_lines = sys.stdin.readlines()
ciphertext = ''

for i in ciphertext_lines:
    ciphertext += i

alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'



def getShiftVal():

    string = ''

    for line in ciphertext:
        string = string + line

    most_common_letter = ((collections.Counter(string).most_common(2)[1])[0])

    shift_val = (alphanum.index(most_common_letter) - 4)

    return shift_val



def decrypt(ciphertext, n):

    alphabet_numbers = collections.deque(string.ascii_uppercase + string.digits)

    alphanum = ''.join(list(alphabet_numbers))

    alphabet_numbers.rotate(n)

    alphanum_rotated = ''.join(list(alphabet_numbers))

    return ciphertext.translate(str.maketrans(alphanum, alphanum_rotated))



def main():

    n = getShiftVal()

    decrypted = decrypt(ciphertext, n)

    print(decrypted)

if __name__ == '__main__':
    main()
4

1 回答 1

1

print默认情况下在其输出后添加一个换行符。在 Python 2 下,使用print decrypted,(注意尾随逗号)来抑制尾随换行符。在 Python 3 下,使用print(decrypted, end=''). 或者,或者,您可以只使用sys.stdout.write(decrypted)来编写输出而不进行任何格式化。

于 2016-05-03T15:03:31.313 回答