Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本python加密卡住了_Python_Text_Python 2.x - Fatal编程技术网

基本python加密卡住了

基本python加密卡住了,python,text,python-2.x,Python,Text,Python 2.x,我被困在这个问题上: 编写一个加密文件的程序。您应该从终端读取文件名,然后读取该文件的内容 然后按如下方式进行加密:a转换为z,b转换为y,依此类推。对于大写字符也是如此。非字母字符保持原样 这就是我到目前为止所做的: fname = raw_input("Enter name of file you want to encrypt: ") fhand = open(fname + ".txt", "r") a = fhand.read() for i in range(0, len(a)):

我被困在这个问题上:

编写一个加密文件的程序。您应该从终端读取文件名,然后读取该文件的内容

然后按如下方式进行加密:
a
转换为
z
b
转换为
y
,依此类推。对于大写字符也是如此。非字母字符保持原样

这就是我到目前为止所做的:

fname = raw_input("Enter name of file you want to encrypt: ")
fhand = open(fname + ".txt", "r")
a = fhand.read()

for i in range(0, len(a)):
    if a[i].isalpha():
        a[i] = chr(ord(a[i]) - 26)

不是完整的答案,只是一些提示,帮助您自己编写最终代码

  • 阅读文件内容-除非您有充分的理由不这样做(课程还在后面,旧的Python版本,…),否则您应该使用
    构造,以确保正确关闭文件,无论发生什么情况:

    with open(fname+".txt","r") as fhand:
        a = fhand.read()
        ...
    
  • “a”被转换为“z”、“b”到“y”,依此类推:您应该控制字符在
    'a'
    'z'
    之间,并且仅当它是:

    if c >= 'a' and c <='z':
        c = 'z' + 'a' - c   # 'z' - new_c =  c-'a' : a=>z, ...
    
混合所有这些,构建脚本应该不难


(*)或者,您可以转换字符列表中的初始字符串,替换列表中的字符,然后
加入列表以重新生成字符串。左为新练习:-)

@Serge Ballesta写了一个处理文件的好方法

至于转换,Python有自己的酷方法。下面是一个例子:

来自字符串导入maketrans,ascii_小写
cypher=maketrans(ascii_小写,ascii_小写[::-1])
打印“abcde”。翻译(密码)
这将输出
zyxwv

string.maketrans
采用相同长度的字符串参数,以便为稍后进行的转换生成密码。在上面的例子中,我把所有的小写ascii字符作为第一个参数,相反的作为第二个参数


在Python3中,你需要使用
字节。maketrans

请为你的问题选择一个更好的标题。“c”是“x”,d是“w”是v有几个问题(尝试变异字符串是其中之一,另一个问题是你的算法无效:你不能通过简单地减去26得到a->z,b->y等)。你到底在挣扎什么?
'a'
result = ''
...
        result = result + ...