我有一个解码凯撒密码的程序和一些包含多行代码的文本文件。
根据我的讲师代码检查器,文本后面总是有一个空白行,但是当我自己运行代码时,我什么都看不到。
删除最后一个字符只会删除文本中的最后一个字母或数字,而不会删除换行符。
这是我的代码:
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()
答案 0 :(得分:1)
print
默认情况下会在输出后添加换行符。在Python 2下,使用print decrypted,
(注意尾随逗号)来抑制尾随换行符。在Python 3下,使用print(decrypted, end='')
。或者,您也可以使用sys.stdout.write(decrypted)
来编写输出而不进行任何格式化。