AI智能
改变未来

第十一届蓝桥杯大赛软件类省赛第二场python大学组题解(源码+注释)

文章目录

  • 一.考试须知
  • 二.题解
  • 试题A:门牌制作
  • 1.题目
  • 2.解析
  • 3.源码
  • 试题B:寻找2020
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题C:跑步锻炼
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题D:蛇形填数
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题E:排序
    • 1.题目
    • 2.解析
  • 试题F:成绩统计
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题G:单词分析
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题H:数字三角形
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题I:平面切分
    • 1.题目
    • 2.解析
    • 3.源码
  • 试题J:装饰珠
    • 1.题目
    • 2.解析
    • 3.源码

    一.考试须知

    二.题解

    试题A:门牌制作

    1.题目

    2.解析

    本题求解从1到2020的数字中出现了多少个2,用循环遍历将每个数字字符串化,统计每个字符串中的2的数量并相加即可

    3.源码
    num = 0for i in range(2021):num += str(i).count("2")print(num)

    答案等于624

    试题B:寻找2020

    1.题目

    2.解析

    循环生成二维列表,按照规则依次遍历

    3.源码
    num = [list(input()) for i in range(6)]ans = 0# 行为2020for i in range(6):for j in range(3):if num[i][j] == "2" and num[i][j + 1] == "0" and num[i][j + 2] == "2" and num[i][j + 3] == "0":ans += 1# 列为2020for i in range(3):for j in range(6):if num[i][j] == "2" and num[i + 1][j] == "0" and num[i + 2][j] == "2" and num[i + 3][j] == "0":ans += 1# 斜为2020for i in range(3):for j in range(3):if num[i][j] == "2" and num[i + 1][j + 1] == "0" and num[i + 2][j + 2] == "2" and num[i + 3][j + 3] == "0":ans += 1print(ans)

    答案为5

    试题C:跑步锻炼

    1.题目

    2.解析

    运用datetime库,详细库讲解可以查看博文python常用标准库总结

    3.源码
    import datetimenum = 0start_time = datetime.datetime(2000, 1, 1)end_time = datetime.datetime(2020, 10, 1)while start_time <= end_time:if start_time.day == 1 or start_time.weekday() == 0:num += 2else:num += 1start_time += datetime.timedelta(days=1)print(num)

    答案为8879

    试题D:蛇形填数

    1.题目

    2.解析

    不难发现规律,斜线上的数字差是4的倍数

    3.源码
    n = 1for i in range(20):n += i * 4print(n)

    答案为761

    试题E:排序

    1.题目

    2.解析

    这其实是一道思维题,我们首先要清楚冒泡排序的原理,假如要把987654321从小到大排序,则需要从头依次找到最大的数字依次交换,则需要交换9*(9-1)/2次(共36次)即可把原数列交换成123456789,如果数列不是完全逆序,则不满足该公式
    由冒泡排序可知,交换的次数和字符串的长度有关,如果字符串的的长度为n,且为完全逆序,则交换次数则为n*(n-1)/2,最为接近100次的且最短的即15字符的字符串,即为
    onmlkjighfedecba,交换该字符串共需要105次,题目要求100次,所以要减少5次,把第六位的字符提前到首位即可,所以最终答案为jonmlkighfedecba

    试题F:成绩统计

    1.题目


    2.解析

    简单的模拟

    3.源码
    n = int(input())x = 0y = 0for i in range(n):score = int(input())if score >= 60:x += 1if score >= 85:y += 1print(str(int(round(x / n, 2) * 100)) + "%")print(str(int(round(y / n, 2) * 100)) + "%")

    试题G:单词分析

    1.题目


    2.解析

    签到题

    3.源码
    s = list(input())max_word = "a"max_number = 0for i in s:temp = s.count(i)if temp > max_number:max_word = imax_number = tempprint(max_word)print(max_number)

    明天考试,后面的正在写

    试题H:数字三角形

    1.题目

    2.解析

    二叉树遍历即可

    3.源码

    试题I:平面切分

    1.题目

    2.解析

    找规律

    3.源码

    试题J:装饰珠

    1.题目

    2.解析

    动态规划背包问题

    3.源码
  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 第十一届蓝桥杯大赛软件类省赛第二场python大学组题解(源码+注释)