全国高校绿色计算大赛 模拟赛 第一阶段 python版题解

(一)求和

挑战任务

这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数位的累加,例如有两个数 1519则 他们的数位和应该为:
1+5+1+6+1+7+1+8+1+9,结果为40。
你来帮他解决这个问题吧。

编程要求

补充完善右侧代码区中的getSum(self,num1,num2)函数,实现对两个数num1num2的数位和相加,最后返回计算的结果即可。

注:num1num2的值都在1-999之间。

测试说明

样例1

输入:
15
19

输出:
40

注意:

  • 针对本关的具体评测代码由平台后台提供,你只需补充完善getSum函数,将计算结果作为返回值返回即可;
  • 本关共包含4个测试用例,需所有测试用例评测通过才能得分。

题解

class Task:
    def getSum(self,num1,num2):
        str_num1 = str(num1)
        str_num2 = str(num2)
        sum_num = 0
        for i in range(num1,num2+1):
            i = str(i)
            for num_i in range(len(i)):
                cut_num = i[num_i:num_i+1]
                # print(len(str_num1))
                # print(cut_num)
                sum_num += int(cut_num)

        # for i in range(len(num1)):
        #     cut_num = num1[i:i + 1]
        #     sum_num = sum_num + int(cut_num)
        # for i in range(len(num2)):
        #     cut_num = num2[i:i + 1]
        #     sum_num = sum_num + int(cut_num)

        return sum_num

    ########## END ##########
#IDE测试
#a = Task()
#b = a.getSum(59,111)
#print(b)

(二)文件查看器

挑战任务

参加“绿盟杯”竞赛的小红遇到一个问题,她想要编写代码实现文件查看器的功能,要实现指定文件夹下所有文件以及文件夹目录结构的展示。

你来帮她实现这个功能吧。

编程要求

编写代码实现对给定文件夹目录结构的展示,如果是文件夹则在其名字之前加上+--若是文件则加上--,上级目录与下级目录,下级文件用两个空格作为间隔,同级下依照文件夹、文件的首字母顺序依次打印;补充完善右侧代码区中的showDirTree(self,path)函数实现要求的功能,其中函数参数含义如下:

  • path:指定要显示的文件夹路径

测试说明

样例1

输入:src/step2/root

输出:

样例2

输入:src/step2/dir

输出:

提示:

os包的,os.listdir(path)可以获取path路径下所有文件和文件夹的名字。

你可以通过如下链接下载本关涉及到的文件夹:
https://www.educoder.net/attachments/download/200773/step2Dir.zip

题解

class Task:
    def showDirTree(self, path):
        print("+--" + os.path.basename(path))
        filters = ["jpg","png","bmp"]
        showTree(path, filters, "  ")


def showTree(path, filters, interval):
    listdir = os.listdir(path)
    for file in listdir:
        if not (os.path.isdir(path + "/" + file)):
            if file.split(".")[-1] in filters:
                print(interval + "--" + file)
        else:
            # if file.split(".")[-1] in filters:
            print(interval + "+--" + file)
            showTree((path + "/" + file), filters, interval + "  ")
#IDE测试
#a = Task()
#b = a.showDirTree("E:\\Workspace\\PycharmProjects\\eduencoder\\step3Dir\\root")

(三)图片查看器

挑战任务

参加“绿盟杯”竞赛的小明想要开发一个图片查看器,他想只显示文件夹下所有图片类型的文件。

你来帮小明实现这个功能吧。

编程要求

基本功能与第二题类似,编写代码实现对给定文件夹目录结构的展示,如果是文件夹则在其名字之前加上+--若是文件则加上--,上级目录与下级目录、下级文件用两个空格作为间隔,同级下依照文件夹、文件的首字母顺序依次打印;另外需要对文件进行过滤,只显示图片类型的文件,本关需要过滤的图片文件类型有:“jpg,png,bmp”,请补充完善右侧代码区中的showDirTree(self,path)函数实现本关要求的功能,其中函数参数含义如下:

  • path:指定要显示的文件夹路径

测试说明

样例1

输入:src/step3/root

输出:

样例2

输入:src/step3/dir

输出:

全国高校绿色计算大赛 模拟赛 第一阶段 python版题解_第1张图片

提示:

os包的,os.listdir(path)可以获取path路径下所有文件和文件夹的名字。

你可以通过如下链接下载本关涉及到的目录文件:

https://www.educoder.net/attachments/download/202620/step3Dir.zip

 

题解

class Task:
    def showDirTree(self, path):
        print("+--" + os.path.basename(path))
        filters = ["jpg","png","bmp"]
        showTree(path, filters, "  ")


def showTree(path, filters, interval):
    listdir = os.listdir(path)
    for file in listdir:
        if not (os.path.isdir(path + "/" + file)):
            if file.split(".")[-1] in filters:
                print(interval + "--" + file)
        else:
            # if file.split(".")[-1] in filters:
            print(interval + "+--" + file)
            showTree((path + "/" + file), filters, interval + "  ")
#IDE测试
#a = Task()
#b = a.showDirTree("E:\\Workspace\\PycharmProjects\\eduencoder\\step3Dir\\root")

 

你可能感兴趣的:(笔记,python)