python——Tiobe排行榜数据处理

Tiobe排行榜数据处理

类型:文件

描述

附件文件tiobe.txt是截止2020年5月为止Tiobe程序设计语言排行榜前十的数据,包括’C’,‘Java’,‘Python’,‘C++’,‘C#’,‘Visual Basic’,‘JavaScript’,‘PHP’,‘SQL’,'R’这10种程序设计语言某年某月的热度指标。请处理tiobe.txt文件中的文本,使其能通过语言名称和年份进行热度指标的查询。

题目要求输入一个程序设计语言名称和一个年份,筛选出该语言该年的数据信息并按要求输出相关数据。

提示:

  1. dict1=eval("{'c':[[(2001, 5, 30), 20.24], [(2001, 6, 30), 20.77], [(2001, 7, 30), 20.75] ] }")语句可以直接将字符串转换为字典赋值给dict1。
  2. 可以让文件里所有数据形成字典,形如{'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。

输出格式

  1. 如果在给定的tiobe数据中能查询到PL_name在year年份的数据,则按照示例格式输出PL_name在year年的所有指标数据(按照日期升序排列),并输出本年热度指标的平均值(保留小数点后两位)。
  2. 如果在给定的tiobe数据中不能查询到PL_name在year年份的数据,则输出“没有查到PL_name语言year年的tiobe数据”。

注意:查询时不考虑PL_name的大小写。

示例 1

输入:

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

示例2

输入:

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

示例3

输入:

Visual Basic
2001

输出:

没有查到visual basic语言2001年的tiobe数据

示例4

输入:

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))

你可能感兴趣的:(python123题库解答,python,开发语言)