老僧& 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日

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号