当前位置:首页>java>【第35期】21天养成编程习惯:Python刷题第21天

【第35期】21天养成编程习惯:Python刷题第21天

  • 2026-10-21 13:27:13
【第35期】21天养成编程习惯:Python刷题第21天

跟老马一起“升级打怪”学编程!

  • 涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试
  • 活动内容:提供不同等级的真题供小朋友们选择练习
  • 备考建议:根据自己备考的等级选择相应题目
  • 附加价值:可作为白名单比赛的备考训练
  • 本月打卡:本月打卡题目

Day21:GESP一级2024.09_小杨购物

【提交】

https://www.luogu.com.cn/problem/B4034

【问题描述】

小杨有  元钱用于购物。商品  的单价是  元,商品  的单价是  元。小杨想购买 相同数量 的商品  和商品 。

请你编写程序帮小杨计算出他最多能够购买多少个商品  和商品 。

【输入描述】

第一行包含一个正整数 ,代表小杨用于购物的钱的金额。

第二行包含一个正整数 ,代表商品  的单价。

第三行包含一个正整数 ,代表商品  的单价。

【输出描述】

输出一行,包含一个整数,代表小杨最多能够购买的商品  和商品  的数量。

【样例输入1】

1212

【样例输出1】

4

【提示】

对于样例1,由于需要购买相同数量的两种商品,因此小杨最多能够购买  件商品  和  件商品 ,共花费  元。因此,样例1的答案为 。

【样例输入2】

1312

【样例输出1】

4

【提示】

对于样例2,由于需要购买相同数量的两种商品,因此小杨最多能够购买  件商品  和  件商品 ,共花费  元。如果小杨想购买  件商品  和  件商品 ,则需花费  元,超过了小杨的预算  元。因此,样例2的答案为 。

对于全部数据,保证有 。

参考程序:

'''GESP一级2024.09_小杨购物https://www.luogu.com.cn/problem/B4034'''n = int(input())a = int(input())b = int(input())print(n // (a + b))

Day21:GESP二级2024.09_小杨的N字矩阵

【提交】

https://www.luogu.com.cn/problem/B4037

【问题描述】

小杨想要构造一个  的  字矩阵( 为奇数),这个矩阵的从左上角到右下角的对角线、第  列和第  列都是半角加号 + ,其余都是半角减号 - 。例如,一个  的  字矩阵如下:

+---+++--++-+-++--+++---+

请你帮小杨根据给定的  打印出对应的  字矩阵。

【输入描述】

第一行包含一个正整数 。

【输出描述】

输出对应的  字矩阵。

【样例输入1】

5

【样例输出1】

+---+++--++-+-++--+++---+

【提示】

对于全部数据,保证有  且  为奇数。

参考答案:

'''小杨的 N 字矩阵https://www.luogu.com.cn/problem/B4037'''m = int(input())for i in range(m):for j in range(m):if j == 0or j == m - 1or j == i:            print("+", end="")else:            print("-", end="")    print()

Day21:CIE三级2023.05_编程题37

新学期到了,学校接收了一批捐赠的图书,小明编写了一个简单的程序用来管理图书,并支持借阅功能。为了提高查找图书的效率,小明使用了二分查找法来设计图书借阅功能。以下是小明编写的图书借阅管理程序,请你补全代码。

library = dict()  # 用字典生成一个图书管理数据结构(字典的键为编号,字典的值为['书名',本数])# 书籍入库nums = len(library)  # 先计算图书编号总数library[nums + 1] = ['红楼梦', 5]  # 在编号总数的基础上继续添加新书:library[新编号]=['书名',本数]library[nums + 2] = ['西游记', 10]library[nums + 3] = ['水浒传', 5]library[nums + 4] = ['三国演义', 10]print(library)blist = list(library.keys())# 按书名借阅:bookname = input('请输入借阅图书名称:')min_v = blist[0]max_v = blist[-1]turns = 0while min_v <= ____①____:     turns += 1    cur = (min_v + max_v) ____②____    print(cur)if library[cur][0] == ____③____:if library[cur][1] > 0:            library[cur][1] -= ____④____            print('《%s》借阅成功!' % bookname)else:            print('抱歉,您选择的书籍已被借完!')breakelif blist[cur - 1] > cur:        min_v = ____⑤____else:        max_v = ____⑥____print("经过%d轮二分查找,完成图书的搜索。" % turns)

参考答案:

① max_v;

② // 2;

③ bookname;

④ 1;

⑤ cur +1;

⑥ cur -1。


Day21:GESP四级2025.06_画布裁剪

【提交】

https://www.luogu.com.cn/problem/B4360

【问题描述】

小 A 在高为  宽为  的矩形画布上绘制了一幅画。由于画布边缘留白太多,小 A 想适当地裁剪画布,只保留画的主体。具体来说,画布可以视为  行  列的字符矩阵,其中的字符均为 ASCII 码位于  之间的可见字符,小 A 只保留画布中由第  行到第  行、第  列到第  列构成的子矩阵。

小 A 将画布交给了你,你能帮他完成画布的裁剪吗?

【输入描述】

第一行,两个正整数 ,分别表示画布的行数与列数。

第二行,四个正整数 ,表示保留的行列边界。

接下来  行,每行一个长度为  的字符串,表示画布内容。

【输出描述】

输出共  行,每行一个长度为  的字符串,表示裁剪后的画布。

【样例输入1】

3 52 2 2 4......>_<......

【样例输出1】

>_<

【样例输入2】

5 51 2 3 4AbCdEfGhIkLmNoPqRsTuVwXyZ

【样例输出2】

CdhI

【数据范围】

对于所有测试点,保证 ,,。

参考程序:

方法一:

'''[GESP202506 四级] 画布裁剪https://www.luogu.com.cn/problem/B4360'''h, w = tuple(map(int, input().split()))x1, x2, y1, y2 = tuple(map(int, input().split()))lst = []for i in range(h):    lst.append(list(input().strip()))for i in range(x1 - 1, x2):for j in range(y1 - 1, y2):        print(lst[i][j], end="")    print()

方法二:

'''[GESP202506 四级] 画布裁剪https://www.luogu.com.cn/problem/B4360'''h, w = tuple(map(int, input().split()))x1, x2, y1, y2 = tuple(map(int, input().split()))lst = [input().strip() for _ in range(h)]for i in range(x1 - 1, x2):    print(lst[i][y1 - 1:y2])

青少年编程竞赛交流

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章