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

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

  • 2026-09-08 14:05:20
【第40期】21天养成编程习惯:Python刷题第21天

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

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

Day21:GESP一级2023.06_累计相加

【提交】

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

【问题描述】

1、 累计相加,形如:

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

3、观察后一项与前一项的关系;

【输入描述】

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

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

【输出描述】

输出累计相加的结果。

【样例输入1】

3

【样例输出1】

10

【样例输入2】

4

【样例输出2】

20

【样例输入3】

10

【样例输出3】

220

参考程序:

'''[GESP202306 一级] 累计相加https://www.luogu.com.cn/problem/B3839'''N = int(input())allTnt = 0# 保存全部序列之和subTnt = 0# 保存子序列之和for i in range(1, N+1):    subTnt += i    allTnt += subTntprint(allTnt)

Day21:GESP二级2023.06_自幂数

【提交】

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

【问题描述】

1、判断一个正整数是否为自幂数;

2、自幂数是指  位数各位数字  次方之和是本身,如 153 是 3 位数,其每位数的 3 次方之和是 153 本身,因此 153 是自幂数,1634 是 4 位数,其每位数的 4 次方之和是 1634 本身;

3、首先输入一个整数  表示随后有  行每行有一个整数,输出每个整数是否为自幂数,如是则输出 T,否则 F。

【输入描述】

1、输入正整数 。不考虑输入不合规情形如负数、负整数、零或其他字符串等;

2、从第 2 行开始,输入  行每行一个正整数;

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

【输出描述】

1、输出对应正整数是否为自幂数,如是则输出一个英文字母 T,否则一个英文字母F;

2、特别提示:注意输出字母为大写,小写将判为错误,前后没有空格等。

【样例输入1】

3152111153

【样例输出1】

FFT

【样例输入2】

5820854883488593477123455432

【样例输出2】

TTTFF

参考程序:

'''[GESP202306 二级] 自幂数判断https://www.luogu.com.cn/problem/B3841'''N = int(input())  # 输入数据的数量for i in range(N):    M = int(input())  # 输入判断的数    howDigit = 0# 获得输入整数的位数    tmp = Mwhile tmp != 0:        howDigit += 1        tmp //= 10# 执行完本步,M 将减少 1 位    tnt = 0    tmp = M# 计算各位幂次方的和while tmp != 0:        tnt = tnt + (tmp % 10) ** howDigit        tmp //= 10# 判断是否为自幂数if tnt == M:        print("T")else:        print("F")

Day21:GESP三级2023.09_小杨的储蓄

【提交】

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

【问题描述】

小杨共有个储蓄罐,编号从0到。从第1天开始,小杨每天都会往存钱罐里存钱。具体来说,第天他会挑选一个存钱罐 ,并存入元钱。过了天后,他已经忘记每个储蓄罐里都存了多少钱了,你能帮帮他吗?

【输入描述】

输入2行,第一行两个整数;第二行个整数,其中第个整数为(保证)。

每行的各个整数之间用单个空格分隔。

保证;

【输出描述】

输出个用单个空格隔开的整数,其中第个整数表示编号为的存钱罐中有多少钱()。

【特别提示】

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

【样例输入1】

2 30 1 0

【样例输出1】

4 2

【样例解释1】

小杨在第1天、第2天、第3天分别向0号、1号、0号存钱罐存了1元钱、2元钱、3元钱,因此0号存钱罐有1+3=4元钱,而1号存钱罐有2元钱。

【样例输入2】

3 50 0 0 2 0

【样例输出2】

11 0 4

参考程序:

'''[GESP202309 三级] 小杨的储蓄https://www.luogu.com.cn/problem/B3867'''N, D = map(int, input().split())lst = list(map(int, input().split()))arr = [0] * Nfor i in range(D):    arr[lst[i]] += i + 1print(" ".join(map(str,arr)))

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

最新文章

随机文章