百家姓排名

百家姓排名

数据仅供参考,用来练习使用。

代码

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.查询各省(区、市)第一大姓氏
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值