老僧& 2021-04-29 18:09 采纳率: 50%
浏览 35
已结题

如何使用python的 面向对象去编写,求大佬们解析一下

根据描述设计类Count:在控制台接收一段字符串,当按下”Enter时分别统计|输入的字符串中汉字、字母、数字、特殊符号(问号冒号加号减号句号逗|号空格百分号引号感叹号)的个数,例如:

|输入:你好,python66...

输出:

汉字:['你', '好]

数字:["6', '6', '6']

字母:['p', 'y', 't, 'h', 'o', 'n']

特殊符号:[,'”,'

要求:

1、对象属性包括:

input_ str(用 于接收用户输入的字符串)

result(字典,用于存放最后的结果(各字符类型有哪些字符) )2、构造方法,用户初始化对象属性

count(self),统计各字符类型

show(self),打印结果

4、程序放到循环中一直执行下去

5、正则规则:

汉字: [\u4e00-\u9fa5]

字母: [a-zA-Z]

数字: [0-9]

特殊符号: [! ,).,%;,,, ,,-,+,?]

  • 写回答

1条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-04-29 22:18
    关注
    import re
    
    class Count:
        """键盘输入统计类"""
        
        def __init__(self):
            """构造函数"""
            
            self.input_str = None # 接收用户输入的字符串
            self.result = {
                '汉字': list(),
                '数字': list(),
                '字母': list(),
                '特殊符号': list()
            } # 统计结果
            
        def count(self):
            """对用户输入的字符串做统计"""
            
            r = re.compile(r'[\u4e00-\u9fa5]').findall(self.input_str)
            self.result['汉字'].extend(r)
            
            r = re.compile(r'[0-9]').findall(self.input_str)
            self.result['数字'].extend(r)
            
            r = re.compile(r'[a-zA-Z]').findall(self.input_str)
            self.result['字母'].extend(r)
            
            r = re.compile(r'[!,).,%;,,, ,,-,+,?]').findall(self.input_str)
            self.result['特殊符号'].extend(r)
        
        def show(self):
            """显示统计结果"""
            
            print('汉字:%s'%str(self.result['汉字']))
            print('数字:%s'%str(self.result['数字']))
            print('字母:%s'%str(self.result['字母']))
            print('特殊符号:%s'%str(self.result['特殊符号']))
        
        def run(self):
            """接收用户输入,空输入表示结束"""
            
            while True:
                self.input_str = input('请输入:')
                if self.input_str:
                    self.count()
                else:
                    print('输入结束,统计结果如下:')
                    self.show()
                    break
    
    if __name__ == '__main__':
        chin = Count()
        chin.run()
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况