2024-11-03 04:23:12
导读:今天首席CTO笔记来给各位分享关于用python统计一共多少个姓的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
用python怎么打出100个姓名用python100个姓名的方法如下:
1、做好前期准备工作,姓是固定的,名是随机的,因此可以通过随机调用常用汉字来匹配成为姓名,。
2、导入随机库,整理常见的姓氏为一个数组。
3、导入常用汉字,并打乱顺序。
4、进行字节随机拼接。
使用Python自动统计列表中的男生女生人数
在开始这个项目之前,我们先了解一下类变量的基础知识:
静态属性==实例变量/成员变量
动态属性==实例函数(方法)/成员函数(方法)
每一份实例都有自己独立的一份数据;
对于公共的数据(对每个对象没有差异的数据),我们把它定义成实例变量是不合理的。我们只需要存储一份,应该把它定义成类变量,所有的对象后期调用的时候直接调用类变量就可以了。这样可以提高运行速度、节约对象实例化的内存资源。
类变量一般位于类名称的下面,构造函数的上面;
类变量只存储一份,存储在类空间中,在每个对象的空间中不需要存储类变量
在类中访问类变量:类名.类变量名称
在对象中访问类变量:类名.类变量名称或者对象名.类变量名称
推荐:如果访问类变量,最好还是通过类名.类变量名称来进行访问。
如果类变量与实例变量同名,使用对象名.类变量名访问,优先访问的是实例变量。
原则:变量通过对象名.变量名的方式访问时,优先在当前对象中查找有没有该变量名,如果没有则去类空间中查找该变量名。
我们搭建一个可以统计学生人数的窗体,包括男生人数和女生人数:
前面的界面我们已经搭建好啦,现在我们要写一个student模块来实现数据统计的功能。
学生列表、男生人数、女生人数,我们将其作为类变量存储在Student类中,我们定义一个load_student函数用来读取文件中的学生信息,并实现男生女生人数的统计功能
为了防止每次实例化这个类的时候,类变量收到干扰;我们定义一个机制:在Student类的构造方法中,在调用load_student方法前先判断一下,如果类变量student_list数据为空,则需要导入,否则不导入数据。
现在我们把GUI与后台的功能做一个整合,这里我们定义一个控制程序start.py,作为程序的入口;
现在已经可以从程序入口打开GUI了,但是还没有显示人数、表格中的数据也没有显示。所以我们需要在studentgui中再添加一个load_student_info函数,将功能函数获取到结果加载到GUI界面中。这里主要做两件事:
先实例化操作学生的类,
没有实例变量,实例化还有什么用?实际上,如果不实例化的话,Student类中的数据是无法导入到StudentGUI中来用的。
实例化完成后,在StudentGUI中直接给显示学生人数的变量设置值即可:
给GUI界面的TreeView表格填充数据,填充之前先将TreeView清空:
然后判断传递过来的student_list里是否有数据,如果没有数据则弹出警示框,有数据则使用insert方法逐行插入数据:
至此,我们的项目已经基本完成了
python分析人数最多的姓氏先收集常见姓氏列表,获取姓名的第一个字,然后在姓氏列表中匹配,如果找到那么姓氏就是这个字,如果没找到就尝试姓名前两个字,如果还没找到就尝试更多字(当然中国姓氏一般就两字,我还没见过两字以上的姓)或者手动辨别姓氏,然后把姓氏补充进列表。这种思路的问题在于复合姓可能会出问题,比如”司“和”司马“,脚本识别出的姓会是”司“。#!/usr/bin/envpython
#-*-coding:utf-8-*-
#Python版本需要为3.5以上
first_names=('李','王','司','司马')
defname_parser(name,first_name_count=1):
"""
分析姓名,返回姓和名的元组
:paramstrname:姓名
:paramintfirst_name_count:姓氏长度,默认为1
:return:姓和名的元组,如果没分析成功就返回空元组
:rtype:tuple
"""
ifname[0:first_name_count]infirst_names:
return(name[0:first_name_count],name[first_name_count:])
else:
return()
if__name__=='__main__':
#name.txt需要为UTF-8编码,如果为其他编码,自行优化处理
withopen('name.txt','r',encoding='utf-8')asf:
foriinf:
name=i.rstrip('\n')
#最多尝试两字的姓
forninrange(1,3):
s=name_parser(name,n)
ifs:
print('{}的姓氏为:{},名字为:{}.'.format(name,s[0],s[1]))
break
else:
print('未分析出{}的姓氏和名字,可能需要补充姓氏列表.'.format(name))
结语:以上就是首席CTO笔记为大家介绍的关于用python统计一共多少个姓的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。