python练习题

1、统计词频

# 统计词频
def words_count(str):
    str_list = str.replace('\n','').lower().split(' ')
    count_dict = {}
    # 如果字典里已经存在这个单词,则count+1
    # 如果没有则放入字典
    for str in str_list:
        if str in count_dict.keys():
            count_dict[str] = count_dict[str] + 1

        else:
            count_dict[str] = 1

    count_list = sorted(count_dict.items(),key=lambda x:x[1],reverse=True)
    return count_list


str_txt =  """hello world hello"""

print(words_count(str_txt))


#注意用split切割的时候 不要忘记加空格

#否则会报错ValueError: empty separator

 

#正确运行的结果

[('hello', 2), ('world', 1)]

 

 2、类装饰器

首先要知道__init__方法的执行是由创建对象触发的,而__call__方法的执行是由对象后加括号触发的。

class ClsDeco(object):
    def __init__(self,fun):
        self.fun = fun

    def __call__(self, *args, **kwargs):
        print('为函数添加额外的功能')
        self.fun()

@ClsDeco  # test = ClsDeco(test)
def test():
    print('test')

test()

# 运行结果

为函数添加额外的功能
test

  

 

posted @ 2018-07-22 23:14  TotoroCoder^_^  阅读(192)  评论(0编辑  收藏  举报