image

编辑人: 沉寂于曾经

calendar2025-06-01

message7

visits926

2023月12月Python五级实操答案及解析

一、编程题

1、36.单词表问题
小明是一名学生,他正在学习英语单词的拼写。他想要创建一个单词表,用于存储他学习过的单词,并统计每个单词出现的次数。请你帮助他补全代码完成以下任务:
(1)创建一个空的字典 word_dict,用于存储单词和对应的出现次数;
(2)使用 input() 函数,提示小明输入一个单词,并将其存储到变量 word 中;
(3)检查字典 word_dict 中是否已经存在该单词。如果存在,则将该单词的出现次数加一;如果不存在,则将该单词添加到字典中,并将其出现次数设置为一;
(4)重复步骤 2 和步骤 3,直到小明输入字符串's'为止;
(5)创建一个空的集合 unique_words,用于存储所有不重复的单词;
(6)遍历字典 word_dict 的键(即单词),将每个键添加到集合 unique_words 中;
(6)打印出字典 word_dict 中每个单词和对应的出现次数;
(8)打印出集合 unique_words 中的所有不重复的单词。
样例:
输入
请输入一个单词:hello
请输入一个单词:world
请输入一个单词:hello
请输入一个单词:python
请输入一个单词:s
输出
单词和出现次数:
hello : 2
world : 1
python : 1
不重复的单词:
world
hello
python
程序:
word_dict = {}
while True:
​ word = input("请输入一个单词:")
​ if word == "s":
​ break
​ if word in word_dict:
​ ①
​ else:
​ word_dict[word] = 1
unique_words = ②
for word in word_dict:
​ unique_words.add(word)
print("单词和出现次数:")
for word in word_dict:
​ ③
print("不重复的单词:")
for word in unique_words:
​ ④

参考答案:1. 创建一个空的字典 word_dict,用于存储单词和对应的出现次数:```pythonword_dict = ```2. 使用 input() 函数,提示小明输入一个单词,并将其存储到变量 word 中:```pythonwhile True:word = input("请输入一个单词:")```3. 检查字典 word_dict 中是否已经存在该单词。如果存在,则将该单词的出现次数加一;如果不存在,则将该单词添加到字典中,并将其出现次数设置为一:```pythonif word == "s":breakif word in word_dict:word_dict[word] += 1else:word_dict[word] = 1```4. 创建一个空的集合 unique_words,用于存储所有不重复的单词:```pythonunique_words = set()```5. 遍历字典 word_dict 的键(即单词),将每个键添加到集合 unique_words 中:```pythonfor word in word_dict:unique_words.add(word)```6. 打印出字典 word_dict 中每个单词和对应的出现次数:```pythonprint("单词和出现次数:")for word, count in word_dict.items():print(f"word : count")```7. 打印出集合 unique_words 中的所有不重复的单词:```pythonprint("不重复的单词:")for word in unique_words:print(word)```

解析:【喵呜刷题小喵解析】:

首先,我们需要创建一个空的字典 `word_dict` 来存储单词和对应的出现次数。

然后,我们使用 `input()` 函数提示用户输入一个单词,并将其存储到变量 `word` 中。接下来,我们需要检查字典 `word_dict` 中是否已经存在该单词。如果存在,我们需要将该单词的出现次数加一。如果不存在,我们需要将该单词添加到字典中,并将其出现次数设置为一。

接着,我们需要创建一个空的集合 `unique_words` 来存储所有不重复的单词。然后,我们遍历字典 `word_dict` 的键(即单词),将每个键添加到集合 `unique_words` 中。

最后,我们打印出字典 `word_dict` 中每个单词和对应的出现次数,以及集合 `unique_words` 中的所有不重复的单词。

在代码实现中,我们使用了 `if` 语句来检查字典中是否已存在单词,使用 `+= 1` 来增加单词的出现次数,使用 `set()` 函数来创建一个空的集合,使用 `add()` 方法将单词添加到集合中,使用 `items()` 方法获取字典中的键值对,使用 `f-string` 来格式化打印单词和出现次数。

2、37.​
打字正确率问题
设计一个判断打字正确率程序。
如样板字符串为“我爱你中国”,如果输入的字符串长度与样板字符串长度相同,则调用编程模板中Percentage函数去计算这两个字符串对应位置相同的字符个数占字符总长度的百分比,按照示例的格式输出;
例如:
如果样板字符串为“我爱你中国”
输入字符串“我爱你中国”
输出:
匹配率:100%
输入字符串"我爱你中华"
输出:
匹配率:80%
输入字符串“我爱你”
输出:
输入字符串长度不一致,请重新运行本程序!
样板程序:
def Percentage(source,target):
​ s_list= ①
​ t_list= ②
​ c_list= ③
​ return len(c_list)/len(s_list)
s1 = "我爱你中国"
print("请输入以下内容:\n"+s1)
s2 = input()
if ④ :
​ print("输入字符串长度不一致,请重新运行本程序!")
else:
​ print( ⑤ )

参考答案:br />1. ① s_list = list(source)2. ② t_list = list(target)3. ③ c_list = [s if s == t else "" for s, t in zip(s_list, t_list)]4. ④ len(s2) != len(s1)5. ⑤ "匹配率:%".format(len(c_list)/len(s1)*100)

解析:【喵呜刷题小喵解析】

这是一道编程题目,要求我们设计一个程序来计算打字正确率。题目已经给出样板字符串“我爱你中国”和一个样板程序。根据样板程序,我们需要将程序补全,使得它可以正确地计算打字正确率。

1. ① s_list = list(source):将样板字符串转换为列表,方便后续处理。
2. ② t_list = list(target):将输入字符串转换为列表,同样是为了方便处理。
3. ③ c_list = [s if s == t else "" for s, t in zip(s_list, t_list)]:这里使用zip函数将两个列表对齐,然后用列表推导式遍历对齐后的字符,如果字符相同则保留,否则为空字符串。这样就可以得到两个字符串对应位置相同的字符列表。
4. ④ len(s2) != len(s1):判断输入字符串的长度是否与样板字符串的长度相同。
5. ⑤ "匹配率:{}%".format(len(c_list)/len(s1)*100):如果输入字符串长度与样板字符串长度相同,则计算匹配率并输出。

这样,我们就补全了样板程序,使得它可以正确地计算打字正确率。

3、38.过马路问题
在遥远的mars星球,即将入学的小精灵们正在学习过马路。它们需要请精灵学院的哥哥姐姐们的指导。
精灵学院共有C名学员(1≤C≤2000),编号为1...C,每名学员i愿意在时间Ti帮助小精灵。当前共有N名小精灵(1≤N≤2000),编号为1...N,其中小精灵j能够在时间Aj和时间Bj之间过马路。当前情况下,结伴过马路是最好的办法,每位小精灵j想找到一位学员i结伴过马路,i和j必须满足Aj≤Ti≤Bj。
每名学员最多只能结伴一名小精灵,每名小精灵最多结伴一名学员,请帮助计算可以得到的最大结伴数。
输入格式:
第一行输入包含C和N。
接下来C行包含T1 ... TC,
再接下来N行包含用于j = 1 ... N的Aj和Bj(Aj≤Bj)。 A,B和T都是不超过30000的正整数。
输入样例:
5 4
7
8
6
2
9
2 5
4 9
0 3
8 13
输出格式:
一共整数,表示精灵学院学员和小精灵的最大结伴数。
输出样例:
3
n,m= map(int, input().split())
t=[];a=[];b=[];h=[]
for i in range(1,n+1):
​ x=int(input())
​ t.append(x)
​ h.append(0)

for i in range(1,m+1):
​ ① = map(int, input().split())
​ a.append(x)
​ b.append(y)

t. ②
for i in range(m-1):
​ for j in range(m):
​ if((a[i]>a[j]) or (a[i]==a[j] and b[i]>b[j])):
​ a[i],a[j]=a[j],a[i]
​ ③
ans=0
for i in range(m):
​ for j in range(n):
​ if(t[j]>=a[i] and t[j]<=b[i] and h[j]==0):
​ ④
​ h[j]=1
​ break
​ if(t[j]>b[i]):
​ break
print(ans)

参考答案:```pythonn, m = map(int, input().split())t = [0] * na = [0] * mb = [0] * mfor i in range(n):t[i] = int(input())for i in range(m):a[i], b[i] = map(int, input().split())t.sort()a.sort(key=lambda x: (x, b[x]))b.sort(key=lambda x: (x, a[x]))ans = 0for i in range(m):for j in range(n):if t[j] >= a[i] and t[j] <= b[i] and t[j] > t[ans]:ans = jbreakif t[j] > b[i]:breakprint(ans + 1)```

解析:【喵呜刷题小喵解析】:

首先,我们读取输入数据,包括学员数量C、小精灵数量N,以及每个学员的可用时间T和每个小精灵的过马路时间范围A和B。

然后,我们初始化学员和小精灵的时间列表t、a和b,并将它们分别填充为输入数据。

接下来,我们对学员和小精灵的时间进行排序。对于学员,我们按照时间T进行排序;对于小精灵,我们按照开始时间A进行排序,如果A相同,则按照结束时间B进行排序。

然后,我们遍历每个学员,对于每个学员,我们遍历每个小精灵,检查小精灵的时间是否在学员的可用时间内,并且小精灵没有被其他学员选中。如果是,我们将小精灵标记为被选中,并找到时间最早的被选中的小精灵。最后,我们输出被选中的小精灵的数量加1。

需要注意的是,在检查小精灵的时间是否在学员的可用时间内时,我们需要确保小精灵的开始时间A小于等于学员的可用时间T,并且小精灵的结束时间B大于等于学员的可用时间T。如果小精灵的结束时间B大于学员的可用时间T,则我们不再考虑该学员。

另外,在遍历小精灵时,我们需要确保小精灵没有被其他学员选中,否则我们不再考虑该小精灵。

最后,我们输出被选中的小精灵的数量加1,因为在题目中要求输出的是精灵学院学员和小精灵的最大结伴数,而小精灵的数量就是最大结伴数。

注意,上述代码只是一个可能的实现方式,并不是唯一正确的实现方式。在实际编程中,我们需要根据题目的具体要求和输入数据的特性,选择最适合的算法和数据结构,以及最优的实现方式。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2023月12月Python五级实操答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share