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

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

  • 2026-10-03 20:26:06
【第40期】21天养成编程习惯:Python刷题第15天

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

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

Day15:GESP一级2023.03_分数交错加减计算

【问题描述】

分数交错加减计算,形如:

(1)利用 input() 语句输入一个大于 1 的正整数;

(2)计算规则:分母为连续奇数,分子为 1,偶数位置相减,奇数位置相加,一直计算到最接近 N(含)的奇数分母为止;

(3)计算结果四舍五入保留 8 位小数,仅输出计算结果,没有其他。

【输入描述】

输入一个大于 1 的正整数,假设输入合规,不考虑不合规情景,如带小数点的数,负数等。

特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。

【输出描述】

输出四舍五入保留 8 位小数。

特别提示:仅输出 8 位小数,没有其他。

【样例输入 1】

100

【样例输出 1】

0.78039866

【样例输入 2】

1000

【样例输出 2】

0.78489816

参考程序:

注意:仅供参考,考生可以自行设计,结果符合题意即可。

方法一:

N = int(input())i = 0s = 0j = 2 * i + 1while j <= N:if i % 2 == 0:        s += 1 / jelse:        s -= 1 / j    i += 1    j = 2 * i + 1print(round(s, 8))

方法二:

N = int(input())s = 0for i in range(1, N + 1, 2):if i % 4 == 1:        s += 1 / ielif i % 4 == 3:        s -= 1 / iprint(round(s, 8))

方法三:

N = int(input())s = 0for i in range(1, N + 1, 4):    s += 1 / ifor i in range(3, N + 1, 4):    s -= 1 / iprint(round(s, 8))

方法四:

N = int(input())s = 0for i in range(1, N + 1, 4):    s += 1 / iif i + 2 <= N:        s -= 1 / (i + 2)print(round(s, 8))

Day15:GESP二级2025.06_幂和数

【提交】

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

【问题描述】

对于正整数 ,如果  可以表为两个  的次幂之和,即 ( 均为非负整数),那么称  为幂和数。

给定正整数 ,请你求出满足  的整数  中有多少个幂和数。

【输入描述】

一行,两个正整数 ,含义如上。

【输出描述】

输出一行,一个整数,表示  之间幂和数的数量。

【样例输入1】

2 8

【样例输出1】

6

【样例输入2】

10 100

【样例输出2】

20

【数据范围】

对于所有测试点,保证 。

参考程序:

'''[GESP202506 二级] 幂和数https://www.luogu.com.cn/problem/B4357'''l, r = tuple(map(int, input().split()))x, cnt = 0, 0while2 ** x <= r:    y = xwhile2 ** y <= r:if l <= 2 ** x + 2 ** y <= r:            cnt += 1        y += 1    x += 1print(cnt)

Day15:GESP三级2023.06_密码合规检测

【提交】

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

【问题描述】

1、网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。

2、合法的密码只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间10个数字以及!@#$四个特殊字母构成。

3、密码最短长度:6 个字符,密码最大长度:12 个字符。

4、大写字母、小写字母和数字必须有其中两种,以及至少有四个特殊字符中的一个。

【输入描述】

1、输入以英文逗号分隔的多个字符组合作为被检测密码。输入时的逗号都作为分隔符,不被视作检验密码本身。

2、特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。

【输出描述】

1、逐行输出 0 个或多个合规的密码。

2、输出顺序以输入字符串出现先后为序,即先出现则先输出。

【样例输入1】

seHJ12!@,sjdkffH$123,sdf!@^&12 HDH,123&^YUhg@!

【样例输出1】

seHJ12!@sjdkffH$123

【样例输入2】

123!@#&^%ZAqaz,abc123ABC!@#,qaz123WSX!@#,12QAqa!@,12QAqa!@^&

【样例输出2】

abc123ABC!@#,qaz123WSX!@#,12QAqa!@

参考程序:

'''[GESP202306 三级] 密码合规https://www.luogu.com.cn/problem/B3843'''pwdList = input().split(",")for itm in pwdList:    lowerCount = 0    upperCount = 0    digitCount = 0    specialCount = 0    otherCount = 0for letter in itm:if ord('a') <= ord(letter) <= ord('z'):            lowerCount += 1elif ord('A') <= ord(letter) <= ord('Z'):            upperCount += 1elif ord('0') <= ord(letter) <= ord('9'):            digitCount += 1elif letter in"!@#$":            specialCount += 1else:            otherCount += 1break    triState = 0# 大写小写数字种类数量if lowerCount > 0:        triState += 1if upperCount > 0:        triState += 1if digitCount > 0:        triState += 1if triState >= 2 and specialCount > 0 and (6 <= len(itm) <= 12) and othercount == 0:        print(itm)

Day15: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天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章