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

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

  • 2026-10-11 06:14:17
【第42期】21天养成编程习惯:Python刷题第05天

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


Day05:GESP一级2025.12_小杨的爱心快递

【提交】

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

【问题描述】

小杨是“爱心社区”的小志愿者,每周他都会帮助邻居们寄送捐赠给山区小学的文具和书籍。快递公司为了支持公益行动,制定了特殊的运费规则,鼓励大家合理包装:

假设快递的体积为 ,重量为 。

  • 按体积计算:运费按体积计算,公式是  元。

  • 按重量计算:为了鼓励减轻包裹重量,规则是:当重量小于  克,即  时,运费为  元;当重量达到或超过  克,即  时,运费为  元。

快递公司的叔叔说:“我们应该选择最公平合理的计费方式。”

所以,最终的运费会取按体积计算和按重量计算这两种方式中价格较低的那一个,这样对寄件人最公道。

【输入描述】

四行,每行一个一位小数的浮点数,分别代表,快递的体积 ,快递的重量 ,第一档重量运费 ,第二档重量运费 。

【输出描述】

一行一个一位小数,代表实际快递运费。

【样例输入1】

100.4300.260.670.5

【样例输出1】

50.2

【样例输入2】

99.8200.960.270.1

【样例输出2】

49.9

【样例解释】

  • 对于样例 1:快递体积  为 ,重量  为 ,第一档重量运费  为 ,第二档重量运费  为 。

    输出价格较低的 。

    • 若按体积收费,费用为 ;
    • 若按重量收费,由于重量  超过 ,费用为 。
  • 对于样例 2:快递体积  为 ,重量  为 ,第一档重量运费  为 ,第二档重量运费  为 。

    输出价格较低的 。

    • 若按体积收费,费用为 ;
    • 若按重量收费,由于重量  小于 ,费用为 。

【数据范围】

对于所有测试点,保证给出的浮点数不超过 。

参考程序:

'''[GESP202512 一级] 小杨的爱心快递https://www.luogu.com.cn/problem/B4445'''V = float(input())G = float(input())M = float(input())N = float(input())p1 = 0.5 * Vp2 = M if G < 300else Np = min(p1, p2)print("%.1f" % p)

Day05: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()

Day05:GESP三级2026.06_字符转换

【提交】

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

【问题描述】

小杨同学有一串字符,里面可能有:

  • 大写字母,比如 A、B、C
  • 小写字母,比如 a、b、c
  • 数字,比如 0、1、2

现在小杨同学想把这串字符变一变,规则如下:

  1. 如果是大写字母,就变成对应的小写字母;
  2. 如果是小写字母,就变成对应的大写字母;
  3. 如果是数字,就变成 *。

请你按照这个规则,帮小杨把整串字符转换好。

【输入描述】

输入一共有  行。第一行:一个整数,表示这串字符一共有多少个字符。第二行:一串连续的字符,中间没有空格。

【输出描述】

输出转换后的字符。

注意: 输出时字符之间不要加空格。

【样例输入1】

5aBc98

【样例输出1】

AbC**

【样例解释1】

原来的字符是:

aBc98

从左到右一个一个看:

  1. a 是小写字母,所以变成 A;
  2. B 是大写字母,所以变成 b;
  3. c 是小写字母,所以变成 C;
  4. 9 是数字,所以变成 *;
  5. 8 是数字,所以变成 *。

所以最后输出:

AbC**

【数据范围】

字符个数不会超过  个。

每个字符只会是大写字母、小写字母或数字。

参考程序:

'''[GESP202606 三级] 字符转换https://www.luogu.com.cn/problem/B4556'''n = int(input())s = input().strip()res = []for c in s:if c.isupper():        res.append(c.lower())elif c.islower():        res.append(c.upper())else:        res.append('*')print(''.join(res))

Day05:GESP四级2023.12_小杨的字典

【提交】

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

【问题描述】

在遥远的星球,有两个国家 A 国和 B 国,他们使用着不同的语言:A 语言和 B 语言。小杨是 B 国的翻译官,他的工作是将 A 语言的文章翻译成 B 语言的文章。

为了顺利完成工作,小杨制作了一本字典,里面记录了  个 A 语言单词对应的 B 语言单词,巧合的是,这些单词都由地球上的 26 个小写英文字母组成。

小杨希望你写一个程序,帮助他根据这本字典翻译一段 A 语言文章。这段文章由标点符号 !()-[]{}\|;:'",./?<> 和一些 A 语言单词构成,每个单词之间必定由至少一个标点符号分割,你的程序需要把这段话中的所有 A 语言单词替换成它的 B 语言翻译。特别地,如果遇到不在字典中的单词,请使用大写 UNK 来替换它。

例如,小杨的字典中包含 2 个 A 语言单词 abc 和 d,它们的 B 语言翻译分别为 a 和 def,那么我们可以把 A 语言文章 abc.d.d.abc.abcd. 翻译成 B 语言文章 a.def.def.a.UNK.,其中,单词 abcd 不在词典内,因此我们需要使用 UNK 来替换它。

【输入描述】

第一行一个整数 ,表示词典中的条目数。保证 。

接下来  行,每行两个用单个空格隔开的字符串 ,分别表示字典中的一个 A 语言单词以及它对应的 B 语言翻译。保证所有  不重复;保证  和  的长度不超过 。

最后一行一个字符串 ,表示需要翻译的 A 语言文章。保证字符串  的长度不超过 ,保证字符串  只包含小写字母以及标点符号 !()-[]{}\|;:'",./?<>。

【输出描述】

输出一行,表示翻译后的结果。

【特别提醒】

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

【样例输入1】

2abc ad defabc.d.d.abc.abcd.

【样例输出1】

a.def.def.a.UNK.

【样例输入2】

3abc ad defabcd xxxxabc,(d)d!-abc?abcd

【样例输出2】

a,(def)def!-a?xxxx

【样例输入3】

1abcdefghij klmnopqrst!()-[]{}\|;:'",./?<>abcdefghijklmnopqrstuvwxyz

【样例输出3】

!()-[]{}\|;:'",./?<>UNK

参考程序:

'''[GESP202312 四级] 小杨的字典https://www.luogu.com.cn/problem/B3927'''n = int(input())d = {}for i in range(n):    k, v = input().split(' ')    d[k] = vpunc = '!()-[]{}\|;:\'",./?<>'UNK = "UNK"st = input()curr_token = ""ans = ""for ch in st:if ch in punc:if curr_token in d:            ans += d[curr_token]elif curr_token:            ans += UNK        curr_token = ""        ans += chelse:        curr_token += chif curr_token in d:    ans += d[curr_token]elif curr_token:    ans += UNKprint(ans)

青少年编程竞赛交流

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

最新文章

随机文章