引言:本人从小白自学python,为了测试基础学习效果,增加一定的促进,想通过参加全国计算机等级考试二级python来检验基础学习情况。当然,通过计算机二级不是目的,也不是终点,只是想通过一个考试来检验学习成果。在学习过程中,会将该过程编写的python小程序题目在此发表,希望找到共同学习的人一起讨论,可能发表的有许多不是很完善的地方,请大家指正。后期学习路线,还会继续通过参加一些社会类的考试来检验学习成果。高阶段学习的话,可能会参加一些python的比赛,或者自己接一些项目,然后会根据自己的情况将一些项目的Python程序在此分享。
一、本项目来源:全国计算机等级考试二级教程python语言程序设计,第六章第二程序题第4和5小题。重复元素判定,编写一个函数,接收列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值。同时编写调用这个函数和输出测试结果的程序。第5小题是制作升级程序,利用集合的无重复性改编上一个程序,获得一个更快更简洁的版本。
二、先上传自己写的程序吧
1.初级版的函数程序
def repeat(lis):
item_dic = {}
for i in lis:
item_dic[i]=item_dic.get(i,0)+1
if len(item_dic)
2.升级版的函数程序
def repeat2(lis):
if len(set(lis))
三、解读程序语句。
先解读两个函数的不同吧,主要利用了字典和集合两个特征来收集输入的数据,进行去重,在比较元素变化,来判断有无重复。
item_dic = {}
for i in lis:
item_dic[i]=item_dic.get(i,0)+1
第一个函数,我是用了一个字典来对输入的列表进行一个元素频率的统计,将重复的元素就合并了,然后通过比对字典长度和输入列表长度,就可以比较出有无重复元素。
if len(set(lis))
从两个函数代码的数量和精简程度,利用集合可能效果更好些。
四、程序运行效果
1.第一个程序运行效果
2.第二个程序运行效果
五、程序中需要注意的事。
在编写过程出现过报错,就是在获取输入数据的时候,input获取的是字符串,需要加eval函数,将输入数据进行转换,变为python直接运行数据,保留输入的列表类型,这样才能进行后续处理。