Python 小白到精通——第二章:图灵和恩尼格马密码机2(文本分析)
今天的任务:破解密钥
原以为是像昨天一样,用已有的密码表,转换一下文本就好了。没想到,今天没有密码表! 当我听到说用统计和对比字母出现的频率的方法来破解密码时,我心里浮现出两个字:”天才!”,怎么别人就可以这么聪明呢?
读取文件
查看文件列表操作
# 请运行这个代码框 # 这个语句大概是你没有见过的,“!”代表这是一句系统命令,“ls”代表列出文件夹中的文件,“/home/aistudio/work”是本环境中,文件夹的路径。 # 你可以查询“linux系统命令基础”得到有关知识 !ls /home/aistudio/work
# 输出 code.txt example.txt novel1.txt
读取文件(txt)使用代码
# 请继续运行这个代码框 f = open('/home/aistudio/work/example.txt') example_text = f.read() f.close() # 上面的三行代码就是读取文件的全过程。 print(example_text)
小贴士:
粘贴代码是可以的 (我之前就老想把各种代码背下来,觉着这样才算是自己学到了)。
关于文件路径:
有相对路径和绝对路径。
目录:. 表示当前目录,.. 表示父目录(上一级目录)
参考资料:相对路径_百度百科 (baidu.com)
统计code.txt中的26个字母出现频率,代码复现
f = open('/home/aistudio/work/code.txt') code_text = f.read() f.close() counter_code = {} amount_letter_code = 0 ''' 请写代码,对每个字母计数 ''' for i in code_text: if 'A' <= i <= 'Z': if i in counter_code: counter_code[i] = counter_code[i] + 1 amount_letter_code = amount_letter_code + 1 else: counter_code[i] = 1 frequence_code = {} ''' 请写代码,求出每个字母的频率 ''' for i in counter_code: frequence_code[i] = counter_code[i] / amount_letter_code
小结
第二章了,感觉Al studio的python课程设置挺好的。视频一会儿就看完了,还有`ipynb`的文档,可以再仔细看一遍巩固一下 。 而且配套的课后作业可以很好地帮助对语法的理解。