如何使用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]
特殊符号: [! ,).,%;,,, ,,-,+,?]
答
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()