我试图编写一个程序,打开一个文本文件,并将文件中的每个字符向右移动5个字符。它应该只对字母数字字符执行此操作,并保持非字母数字不变。(例如:C变成H)我应该使用ASCII表来完成这项工作,但是当字符换行时,我遇到了一个问题。例:w应该变成b,但是我的程序给了我一个ASCII表中的字符。另一个问题是所有的字符都打印在不同的行上,我希望它们都打印在同一行上。 我不能使用列表或字典。在
这就是我所拥有的,我不知道如何做最后的if语句
def main():
fileName= input('Please enter the file name: ')
encryptFile(fileName)
def encryptFile(fileName):
f= open(fileName, 'r')
line=1
while line:
line=f.readline()
for char in line:
if char.isalnum():
a=ord(char)
b= a + 5
#if number wraps around, how to correct it
if
print(chr(c))
else:
print(chr(b))
else:
print(char)
使用str.translate:
首先,它是小写还是大写很重要。我在这里假设所有的字符都是小写的(如果不是的话,就很容易造出它们)
w=119在ASCII中,z=122(十进制的ASCII)所以119+5=124和124-122=2,这是我们的新b,然后我们把它加到a-1上(这考虑到如果我们得到1,2+96=98,98是b
对于在同一行上打印,我会将它们写入一个列表,然后从该列表创建一个字符串,而不是在您拥有它们时进行打印。在
例如代替
^{pr2}$我会的
然后将列表中的每个元素连接到一个字符串中。在
您可以创建一个dictionary来处理它:
s
(+ string.lowercase[:5]
)的最后一个加数将前5个字母添加到密钥中。然后,我们使用一个简单的字典理解来创建加密密钥。在放入您的代码中(我还更改了它,以便您迭代行而不是使用
^{pr2}$f.readline()
:相关问题 更多 >
编程相关推荐