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

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

  • 2026-09-18 16:10:37
【第38期】21天养成编程习惯:Python刷题第02天

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

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

Day02:GESP一级2023.12_小杨报数

【提交】

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

【问题描述】

小杨需要从  到  报数。在报数过程中,小杨希望跳过  的倍数。例如,如果 ,,那么小杨就需要依次报出 、、。

现在,请你依次输出小杨报的数。

【输入描述】

输入 2 行,第一行一个整数 ();第二行一个整数 ()。

【输出描述】

输出若干行,依次表示小杨报的数。

【特别提醒】

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

【样例输入 1】

52

【样例输出 1】

135

【样例输入 2】

103

【样例输出 2】

12457810

参考程序:

'''[GESP202312 一级] 小杨报数https://www.luogu.com.cn/problem/B3922'''N = int(input())M = int(input())for i in range(1, N + 1):if i % M != 0:        print(i)

Day02:GESP二级2024.03_小杨的日字矩阵

【提交】

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

【问题描述】

小杨想要构造一个  的日字矩阵( 为奇数),具体来说,这个矩阵共有  行,每行  个字符,其中最左列、最右列都是 |,而第一行、最后一行、以及中间一行(即第  行)的第  个字符都是 -,其余所有字符都是半角小写字母 x。例如,一个  的日字矩阵如下:

|---||xxx||---||xxx||---|

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

【输入描述】

一行一个整数 (,保证  为奇数)。

【输出描述】

输出对应的“日字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出  行,每行除了换行符外恰好包含  个字符,这些字符要么是 -,要么是 |,要么是 x。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。

【特别提醒】

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

【样例输入1】

5

【样例输出1】

|---||xxx||---||xxx||---|

【样例输入2】

7

【样例输出2】

|-----||xxxxx||xxxxx||-----||xxxxx||xxxxx||-----|

参考程序:

'''[GESP202403 二级] 小杨的日字矩阵https://www.luogu.com.cn/problem/B3955'''n = int(input())for i in range(n):    buf = ""for j in range(n):if j == 0or j == n - 1:            ch = "|"elif i == 0or i == n - 1or i == n // 2:            ch = "-"else:            ch = "x"        buf = buf + ch    print(buf)

Day02:GESP三级2024.06_移位

【提交】

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

【问题描述】

小杨学习了加密技术移位,所有大写字母都向后按照一个固定数目进行偏移。偏移过程会将字母表视作首尾相接的环,例如,当偏移量是3的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。

注:当偏移量是26的倍数时,每个大写字母经过偏移后会恰好回到原来的位置,即大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 经过偏移后会保持不变。

【输入描述】

第一行包含一个正整数 。

【输出描述】

输出在偏移量为  的情况下,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 移位替换后的结果。

【样例输入1】

3

【样例输出1】

DEFGHIJKLMNOPQRSTUVWXYZABC

【样例解释】

当偏移量是3的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。

【数据范围】

对于全部数据,保证有 。

参考程序:

'''GESP202406 三级 移位https://www.luogu.com.cn/problem/B4003'''s = "".join([chr(ord("A") + i) for i in range(26)])n = int(input()) % 26print(s[n:] + s[:n])

Day02:GESP四级2023.09_变长编码

【提交】

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

【问题描述】

小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到这么大的数,生活中常用的 这种数也同样需要用4个字节的补码表示,太浪费了些。

热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:

1、对于给定的正整数,首先将其表达为二进制形式。例如,, 。

2、将二进制数从低位到高位切分成每组7bit,不足7bit的在高位用0填补。例如,变为的一组,变为和的两组。

3、由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上0,否则在最高位填上1。于是,0的变长编码为一个字节,926的变长编码为和两个字节。

这种编码方式可以用更少的字节表达比较小的数,也可以用很多的字节表达非常大的数。例如,的二进制为,于是它的变长编码为(十六进制表示) ,共9个字节。

你能通过编写程序,找到一个正整数的变长编码吗?

【输入描述】

输入第一行,包含一个正整数。约定 。

【输出描述】

输出一行,输出对应的变长编码的每个字节,每个字节均以2位十六进制表示(其中,A-F使用大写字母表示),两个字节间以空格分隔。

【样例输入1】

0

【样例输出1】

00

【样例输入2】

926

【样例输出2】

9E 07

【样例输入3】

987654321012345678

【样例输出3】

CE 96 C8 A6 F4 CB B6 DA 0D

参考程序:

'''GESP202309 四级 变长编码https://www.luogu.com.cn/problem/B3870'''N = int(input())# 第一步:转成二进制N = bin(N)[2:]  # 去掉转换成二进制后前面的0bif len(N) % 7 != 0:    N = "0" * (7 - len(N) % 7) + N# 第二步:切7位bList = []for i in range(0, len(N), 7):    bList.append(N[i:i + 7])bList = bList[::-1]  # 逆序# 第三步:补最高位,最后一组补0,其他补1for i, b7 in enumerate(bList[:-1]):    bList[i] = "1" + b7  # 最高位补1else:    bList[-1] = "0" + bList[-1]  # 最后一个补0# 第四步:转成16进制(两位,不足前面填充0)rst = ""for b8 in bList:    rst += hex(int(b8, 2))[2:].upper().zfill(2) + " "# 第五步:去掉最后空格输出结果rst = rst[:-1]print(rst)

青少年编程竞赛交流

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

最新文章

随机文章