老僧& 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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵