蓝桥题库每日一练 · 2026.09.19

9月19日 连续输入由英文字母组成的三行文字(每行不少于 1…

Python编程题参考难度 ★★★★☆蓝桥杯第十一届 选拔赛 · 已用
连续输入由英文字母组成的三行文字(每行不少于 10 个字符,可含空格和英文标点;三行合起来至少有一个英文字母),每行以回车结束。然后:① 把三行拼接成一行输出;② 换行输出文中出现过的英文字母(不分大小写、都用大写、按字母表顺序、间距相同);③ 再换行在每个字母下方输出它在全文中出现的次数(没出现的字母不显示;次数要和上面的字母对齐,次数是两位数时也一样)。
样例
输入 I love you, my baby. You are a good boy. We are very happy with you.输出 I love you, my baby.You are a good boy.We are very happy with you. A B D E G H I L M O P R T U V W Y 5 3 1 5 1 2 2 1 1 7 2 3 1 3 2 2 8
评分标准
  • 8 分:正确将三行文字拼接输出
  • 10 分:正确输出一行大写字母(出现过的、按字母表序、间距相同)
  • 12 分:在字母下方一一对应输出各字母出现次数
参考解法
这题像一条「文字加工流水线」,把三行英文加工成三样东西:拼接、列出用过的字母、数每个字母出现几次。

① 拼接:读三行,用「+」接成一整串,直接 print。
② 数字母(核心):先把整串转成小写(这样大写 A 和小写 a 算同一个),再一个字符一个字符看过去,是字母就记一笔。用一个「字典」当计数本最方便——字母当页码、次数当记录,见一次就在对应页上 +1。
③ 排好再输出:把出现过的字母按字母表排好、转成大写打一行;下面再打一行,一一对应写出各自的次数。

对齐有个小坑:要是某个字母出现了 10 次,「10」占两格,字母却只占一格,下面一行就比上面一行宽,越往右越歪。办法是先算出最大的次数有几位——k = len(str(max(cnt.values()))),max 找出最大的次数,str 把它变成文字,len 数它有几个字符;再用 rjust(k) 在每个字母、每个次数的左边补空格,补到 k 格宽。这样每一列一样宽,上下就对齐了。

s = input() + input() + input()
print(s)                                   # 拼接
cnt = {}
for ch in s.lower():
    if ch.isalpha():                       # 是字母才数……

看此题详解,练更多题目,进入蓝桥题库每日一练 →

此答案或解析由 AI 生成,请谨慎使用。
难度依赛考组别及等考级别粗略评估,仅供参考。