开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
实验六 字符串上机实验
1 .实验目的****
(1).掌握字符串对象String的用法
(2).掌握第三方库jieba库的使用
2.实验内容
通过十个任务来了解字符串和jieba库的基本应用。
3.实验过程
任务 1 :检查某段文本中是否有给定的敏感词,若存在,就把敏感词替换为 3 个星号 “*“ 。****
这题就用一个for循环,遍历一下keyw元组,如果这里面有元素出现在test里面,那么test里面的相应元素就要被替换成“***“。
任务 2 :使用 maketrans ()和 translate ()方法实现了凯撒加密算法,其中 k 表示算法密钥,也就是把每个英文字母变成其后面的第几个字母****
这题ks函数就是转化函数,将英文字母转化成凯撒密码,,low和upper存的ascii码的小写字母和大写字母before存的所有字母,after是要实现的第k位凯撒加密,最后就是实现before和after的转换。
任务 3 :检测用户输入中是否有不允许的敏感字词,如果有就提示非法,否则提示正常****
跟任务1很相似,不同点在于,如果有这个单词就要输出非法,如果遍历完没有出现,就合法。
任务 4 :使用 string 模块提供的字符串常量,模拟生成指定长度的密码****
挺有意思的一题,就是先把所有字母包括数字(包括复数)放进char,然后随机函数choice整合n个在char里面的元素在一起输出。
任务 5 :编写函数实现字符串加密解密,循环使用指定密钥,采用简单的异或算法。****
这题其实就算实验一个对明文解密是密文,对密文解密是明文的过程,函数实现过程比较复杂,要首先把密钥放进去遍历,cycle函数就是起到一个遍历作用,接下来就是遍历整个s,然后异或取值相加,最后返回的就是解密之后的值。
任务 6 :用其他方法实现实验 5 ,其实只要改一下加密解密的函数即可。****
这个函数其实就是用了个for循环依次遍历temp中每个元素,然后异或。当到了s的长度时候们就可以停止了。
任务 7 :编写函数,检查并判断密码字符串的安全强度****
也是个很有意思的任务,首先如果pwd都不是字符串或者字符串长度<6,之间返回false,然后下面就一次判断是否有数字,有小写字母有指定符号,有一个就加一个True,然后最后看True的个数输出密码强度,如果没有字母数字以及指定字符,那么就返回error。
任务 8 :利用 jieba 库统计三国演义中人物的出场次数****
先读文件,再用字典存出现每个词语,词语可以用jieba库分割一下三国演义,最后把字典转化成列表,然后输出。
任务 9 :优化任务 8 ,统计三国演义中人物出场次数****
这里优化了一下,把一些不是任务的词都去掉了,同时把同一人物的不同称呼都统计了一下。
人物 10 :编写程序,统计一段文字中每个词出现的次数****
引入jieba库和collections库,可以调用库里面的函数直接统计一个字典,然后再用lcut精确分割。
4.实验中遇到的问题
这次实验遇到的问题还是挺多的,因为字符串的任务涉及到了很多的库和函数,之前都没接触过,任务2中的maketrans和translate函数之前都没有听说过,也不会用。任务5的异或也不熟悉,cycle函数也不知道,jieba库之前也没有安装过,安装还出了一些问题,将键值对转化成列表开始也不会。以及任务10的两个库,我都每听说过。
5.解决方法
对于不熟悉的库和函数,我都去网上百度了并了解了基础用法,以保能完成基本的实验,jieba库开始以为是内置库,后来才知道是第三方库,要自己安装,然后安装过程中我开始没跟新pip,安装失败,后来跟新了pip,安装成功,但是python还是报错,后来发现原来是文件名和这个给库重合了,安装完之后,写代码时候的一些报错都是根据下面的提示自己debug。
6.实验收获
这次实验很有趣,学会了很多实用的技能,这些小任务,在生活中都有实践,我学会了字符串和jieba库的基本用法,学会了异或,学会了对字符串的加密解密,学会了判断密码强度,和生成指定长度的密码,学会了统计一个文本中一些字符出现的次数,更重要的是,锻炼了我写代码的能力,这次任务的代码都是中长长度的代码,很好的锻炼了我的代码能力,在练习过程中,我遇到了很多问题,比如代码报错,不熟悉的库和函数,我都一一解决,这更加锻炼了我debug,解决问题的能力和自学能力,有很大的收获!