百家姓排名
数据仅供参考,用来练习使用。
代码
class BaiJiaXing:
def __init__(self, data_dict):
self.data_dict = data_dict
"""
从文件中读取信息
"""
def read_info(self):
data_dict = {}
i = 0
for data in open('baijiaxing.txt', encoding='utf-8'):
i += 1
data_dict[i] = data.replace('\n', '')
self.data_dict = data_dict
"""
查询姓氏排名
"""
def search_info(self, search):
result = [key for key, value in self.data_dict.items() if value == search]
if result is None:
print(f"查询的姓氏:{search}不存在!")
else:
return result[0]
"""
查询百家姓前300名
"""
def all_info(self):
data_list = list(self.data_dict.values())
for i in range(len(data_list)):
print("{:<4}".format(data_list[i]), end=' ')
if (i + 1) % 15 == 0:
print()
print()
"""
根据身份查询最大姓氏
"""
def search_by_province(self, province):
province_dict = {'北京': '王', '天津': '王', '河北': '王', '山西': '王',
'内蒙古': '王', '辽宁': '王', '吉林': '王', '黑龙江': '王',
'江苏': '王', '安徽': '王', '山东': '王', '河南': '王', '海南': '王',
"陕西": '王', "甘肃": '王', "新疆": '王', "上海": '张', "湖北": '李',
"湖南": '李', "重庆": "李", "四川": '李', "云南": '李', "江西": '刘',
"浙江": '陈', "福建": '陈', "广东": '陈', "贵州": '杨', "广西": '黄',
"青海": '马', "宁夏": '马'}
result = [value for key, value in province_dict.items() if key == province]
if result is None:
print(f"查询的身份:{province}不存在!")
else:
return result[0]
"""
菜单
"""
def menu(self):
print("{:*^50}".format("百家姓"))
print("1.查询百家姓排名(前300)")
print("2.查询姓氏排名")
print("3.查询各省(区、市)第一大姓氏")
print("0.退出系统")
print("*" * 52)
if __name__ == "__main__":
baijiaxing = BaiJiaXing({})
baijiaxing.read_info()
while True:
baijiaxing.menu()
n = int(input("请输入要查询的功能:"))
if n == 1:
baijiaxing.all_info()
elif n == 2:
value = input("请输入要查询的姓氏:")
print(baijiaxing.search_info(value))
elif n == 3:
province = input("请输入要查询的省份:")
print(baijiaxing.search_by_province(province))
else:
print("退出成功,欢迎下次使用!")
break
运行结果
菜单
1.查询百家姓排名(前300)
2.查询姓氏排名
3.查询各省(区、市)第一大姓氏