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

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

  • 2026-10-11 06:08:32
【第40期】21天养成编程习惯:Python刷题第04天

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

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

Day04:GESP一级2024.12_温度转换

【提交】

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

【问题描述】

小杨最近学习了开尔文温度、摄氏温度和华氏温度的转换。令符号  表示开尔文温度,符号  表示摄氏温度,符号  表示华氏温度,这三者的转换公示如下:

现在小杨想编写一个程序计算某一开尔文温度对应的摄氏温度和华氏温度,你能帮帮他吗?

【输入描述】

一行,一个实数 ,表示开尔文温度。

【输出描述】

一行,若输入开尔文温度对应的华氏温度高于 ,输出 Temperature is too high!;否则,输出两个空格分隔的实数  和 ,分别表示摄氏温度和华氏度,保留两位小数。

【样例输入1】

412.00

【样例输出1】

Temperature is too high!

【样例输入2】

173.56

【样例输出2】

-99.59 -147.26

【数据范围】

参考程序:

'''[GESP202412 一级] 温度转换https://www.luogu.com.cn/problem/B4062'''K = float(input())C = K - 273.15F = C * 1.8 + 32if F > 212:    print("Temperature is too high!")else:    print("%.2f %.2f" % (C, F))

Day04:GESP二级2023.03_字母阵列

【问题描述】

输入一个正整数 N,输出 N 行 N 列字母,字母为大写英文字母,执行效果如下。输入正整数 27,输出 27 行字母,每行 27 个字母。第一行从A 开始,第二行 B 开始。当到达 Z,再从 A 开始。

【输入描述】

输入一行,一个大于等于 1 的正整数 N。

【输出描述】

输出上图所示的字母阵列。

【样例输入 1】

5

【样例输出 1】

ABCDEBCDEFCDEFGDEFGHEFGHI

【样例输入 2】

10

【样例输出 2】

ABCDEFGHIJBCDEFGHIJKCDEFGHIJKLDEFGHIJKLMEFGHIJKLMNFGHIJKLMNOGHIJKLMNOPHIJKLMNOPQIJKLMNOPQRJKLMNOPQRS

参考程序:

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

str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"N = int(input())c = 0for i in range(N):    s = ''    k = cfor j in range(N):        s += str[k % 26]        k += 1    c = (c + 1) % 26    print(s)

Day04:GESP三级2023.06_春游

【提交】

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

【问题描述】

老师带领同学们春游。已知班上有  位同学,每位同学有从 0 到  的唯一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们报出自己的编号。到达的同学都会报出,但有的同学很顽皮,会多次报出。你能帮老师找出有哪些同学没有到达吗?

【输入描述】

输入包含 2 行。第一行包含两个整数  和 ,表示班级有  位同学,同学们共有  次报出编号。约定 。

第二行包含  个整数,分别为  次报出的编号。约定所有编号都在合理范围内。

【输出描述】

输出一行。如果所有同学都到达,则输出 ;否则由小到大输出所有未到达的同学编号,空格分隔。

【样例输入1】

3 30 2 1

【样例输出1】

3

【样例输入2】

3 50 0 0 0 0

【样例输出2】

1 2

参考程序:

'''GESP202306 三级 春游https://www.luogu.com.cn/problem/B3842'''#输入应到人数,和报数次数N , M = map(int,input().split()) #报数的集合,已去重,M 没有用上outSet = set(map(int,input().split()))allNumSet = set(range(N))if outSet == allNumSet:    print(N)else:    print(" ".join(map(str,sorted(allNumSet - outSet))))

Day04:GESP四级2025.03_荒地开垦

【提交】

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

【问题描述】

小杨有一大片荒地,可以表示为一个  行  列的网格图。

小杨想要开垦这块荒地,但荒地中一些位置存在杂物,对于一块不存在杂物的荒地,该荒地可以开垦当且仅当其上下左右四个方向相邻的格子均不存在杂物。

小杨可以选择至多一个位置,清除该位置的杂物,移除杂物后该位置变为荒地。小杨想知道在清除至多一个位置的杂物的情况下,最多能够开垦多少块荒地。

【输入描述】

第一行包含两个正整数 ,含义如题面所示。

之后  行,每行包含一个长度为  且仅包含字符 . 和 # 的字符串。如果为 .,代表该位置为荒地,如果为 #,代表该位置为杂物。

【输出描述】

输出一个整数,代表在清除至多一个位置的杂物的情况下,最多能够开垦的荒地块数。

【样例输入1】

3 5......#..#.....

【样例输出1】

11

【样例解释】

移除第二行从左数第二块空地的杂物后:

.........#.....

第一行从左数前  块荒地,第二行从左数前  块荒地,第三行从左数前  块荒地,均可开垦,。

【数据范围】

对于全部数据,保证有 。

参考程序:

'''[GESP202503 四级] 荒地开垦https://www.luogu.com.cn/problem/B4263'''defcheck(i, j):if i < 1or i > n or j < 1or j > m:return0if arr[i][j] == ".":if arr[i - 1][j] != "#"and arr[i + 1][j] != "#"and arr[i][j - 1] != "#"and arr[i][j + 1] != "#":return 1return 0n, m = map(int, input().split())# 初始化数据arr = [[""for _ in range(1005)] for _ in range(1005)]for i in range(1, n + 1):    s = input()for j in range(1, len(s) + 1):        arr[i][j] = s[j - 1]ans, max_ = 0, 0for i in range(1, n + 1):for j in range(1, m + 1):if arr[i][j] == ".":            ans += check(i, j)else:            arr[i][j] = "."            temp = check(i, j)            temp += check(i - 1, j)            temp += check(i + 1, j)            temp += check(i, j - 1)            temp += check(i, j + 1)            arr[i][j] = "#"if temp > max_:                max_ = tempprint(ans + max_)

青少年编程竞赛交流

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

最新文章

随机文章