类型:文件
附件文件tiobe.txt是截止2020年5月为止Tiobe程序设计语言排行榜前十的数据,包括’C’,‘Java’,‘Python’,‘C++’,‘C#’,‘Visual Basic’,‘JavaScript’,‘PHP’,‘SQL’,'R’这10种程序设计语言某年某月的热度指标。请处理tiobe.txt文件中的文本,使其能通过语言名称和年份进行热度指标的查询。
题目要求输入一个程序设计语言名称和一个年份,筛选出该语言该年的数据信息并按要求输出相关数据。
提示:
dict1=eval("{'c':[[(2001, 5, 30), 20.24], [(2001, 6, 30), 20.77], [(2001, 7, 30), 20.75] ] }")
语句可以直接将字符串转换为字典赋值给dict1。{'c':[[(2001, 5, 30), 20.24], [(2001, 6, 30), 20.77], [(2001, 7, 30), 20.75]] ,'python':[[(2001,5,20),5.7],[(2001,6,20,6.7)],[(2001,7,20),12.9]], ... }
。输入为两行:
第一行是一个字符串,为某程序设计语言的名称PL_name;
第二行为一个正整数year。
注意:查询时不考虑PL_name的大小写。
输入:
python
2001
输出:
[(2001, 5, 30), 1.25]
[(2001, 6, 30), 1.13]
[(2001, 7, 30), 1.2]
[(2001, 8, 28), 1.17]
[(2001, 9, 26), 1.28]
[(2001, 10, 28), 1.23]
[(2001, 11, 31), 1.04]
python语言2001年的tiobe平均值是1.19
输入:
R
2008
输出:
[(2008, 0, 3), 0.04]
[(2008, 1, 7), 0.06]
[(2008, 5, 1), 0.09]
[(2008, 6, 2), 0.08]
[(2008, 7, 3), 0.06]
[(2008, 8, 3), 0.07]
[(2008, 9, 6), 0.07]
[(2008, 10, 2), 0.08]
[(2008, 11, 3), 0.07]
r语言2008年的tiobe平均值是0.07
输入:
Visual Basic
2001
输出:
没有查到visual basic语言2001年的tiobe数据
输入:
Lisp
2001
输出:
没有查到lisp语言2001年的tiobe数据
tiobe_dict = dict() # 所有数据形成一个字典,形如:{'c':[[(2001, 5, 30), 20.24], [(2001, 6, 30), 20.77], [(2001, 7, 30), 20.75] ,'python':[[(2001,5,20),5.7],[(2001,6,20,6.7)],[(2001,7,20),12.9]], ... }
with open('tiobe.txt','r',encoding='utf-8') as data:
for line in data.readlines():
line = line.replace("name : ","")
line = line.replace(",data","")
line = line.replace("Date.UTC","")
line=line.lower() # 全部字母小写
dict1 = eval(line) # 文件的每一行形成一个字典,形如'python':[[(2001,5,20),5.7],[(2001,6,20,6.7)]]
tiobe_dict.update(dict1)
PL_name = input().lower() # 获取程序设计语言名称,不考虑大小写,所以转换为全小写形式
year = int(input()) # 获取年份
rank=0
count=0
if PL_name in tiobe_dict:
ls = tiobe_dict[PL_name]
ls.sort() # 按照日期升序排列
for data in ls:
if year==data[0][0]:
print(data)
rank+=data[1]
count+=1
if count>0:
print("{}语言{}年的tiobe平均值是{:.2f}".format(PL_name, year,rank/count))
else:
print("没有查到{}语言{}年的tiobe数据".format(PL_name, year))
else:
print("没有查到{}语言{}年的tiobe数据".format(PL_name, year))