【任务四】
学习内容
1.实现一个函数get_max_i_word(filename,i),返回文件(由datawhale提供)中最多的几个频次的字母的列表,并将i设为5,打印出来字母的列表组成的字符串。
def get_max_i_word(filename,i=5):
"""或许文件中字母出现次数最多的前i个组成的字符串"""
dict_letter = {} #定义一个空字典
lower_letters = [chr(a) for a in range(97,123)] #获取小写字母列表
upper_letters = [chr(b) for b in range(65,91)] #获取大写字母列表
letters = upper_letters + lower_letters
with open(filename,encoding='utf-8') as f:
contents = f.read()
contents = contents.strip() #删除字符串中所有空格
for letter in letters:
#print('字母' + letter + '个数为:' + str(contents.count(letter)))
dict_letter[letter] = contents.count(letter) #获取每个字母出现的次数,添加到字典
sort = sorted(dict_letter.items(),key=lambda x:x[1],reverse=True) #根据次数由小到大排序,转化为列表
result = ''
for s in sort: #遍历列表
result += s[0] #获取列表中元组的第二个值
if isinstance(i,int): #判定i是否为整数
return result[:i]
else:
return None
filename = 'data.txt'
result = get_max_i_word(filename,5)
print(result)
#输出结果
'whale'
2.附加题:通过字母的提示寻找相关图片,并用matplotlib和numpy或者matplotlib和PIL(pillow)展示出来这张图片
3.开放题:按你自己的想法设计一个类或多个类,设计继承关系,可以只给出抽象的结构,但必须是实际问题的抽象,并解释自己为什么这么设计,最好能有拓展性和实现了部分核心代码。可以参考github上的python项目
class Dota():
"""模拟Dota游戏"""
def __init__(self,nickname,life_value,attack_power):
self.nickname = nickname
self.life_value = life_value
self.attack_power = attack_power
def attack(self,enemy):
enemy.life_value -= self.attack_power
class Kael(Dota):
"""英雄Kael的技能以及各自攻击力对敌方造成的伤害"""
def __init__(self,nickname,life_value,attack_power):
super().__init__(nickname,life_value,attack_power)
self.skills = {'ice':20,'thunder':25,'fire':30}
def attack(self,enemy):
super.attack(enemy)
class Jugg(Dota):
"""英雄Jugg的技能以及对敌方造成的伤害"""
def __init__(self,nickname,life_value,attack_power):
super().__init__(nickname,life_value,attack_power)
self.skills = {'skill_1':50,'skill_2':80}
def attack(self,enemy):
super.attack(enemy)