当前位置:首页>python>Python编程题:27.P4414 ABC

Python编程题:27.P4414 ABC

  • 2026-10-10 17:51:52
Python编程题:27.P4414 ABC

点击蓝字 关注我们

今天要做的是来自洛谷网站的P4414 [COCI 2006/2007 #2] ABC。

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

有账号的可以上去做做。

P4414 [COCI 2006/2007 #2] ABC

题目描述

三个整数分别为 A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

输入格式

第一行包含三个正整数 A,B,C,不一定是按这个顺序。这三个数字都小于或等于 100。第二行包含三个大写字母 A、B 和 C(它们之间没有空格)表示所需的顺序。

输出格式

在一行中输出 A,B 和 C,用一个 (空格)隔开。

输入输出样例

解题思路

输入两行:

第一行:3 个整数(乱序),这三个数从小到大规范定义为 A<B<C;

第二行:连续 3 个大写字母(无空格,仅由 A/B/C 组成),代表输出顺序。

任务:

  • 先把 3 个数字排序,得到:最小 = 规范 A,中间 = 规范 B,最大 = 规范 C;

  • 根据第二行字母序列,依次取出对应数值,按顺序输出,空格隔开。

举例:

数字输入:6 2 9 → 排序后:规范 A=2,规范 B=6,规范 C=9

字母输入:CBA

输出:9 6 2

难点在于如何根据第二行输入识别出输出的顺序,并输出对应的数字。(根据所学水平选择方法)

方法一:用最直白最原始的遍历+判断。(适用于初学者,容易理解)

对第二行输入的字符串进行遍历,再判断当前字符是哪个字母,如果是"A",输出变量a,如果是"B",输出变量b,如果是"C",输出变量c

方法二:利用字典的键值对绑定规则。排序后,将ABC作为键,建立一个字典。

第二行输入后得到一个字符串s,s[0] s[1] s[2]可以获取对应的值,将他们作为键,即可获取字典中对应的值。

方法三:多加一个列表w=[“A”,"B","C"],排序后的3个数字也存在列表num中,先通过w.index(s[0])获得当前字母对应的索引,然后再用这个索引去num列表中获取对应的值。

知识点

  • 字符输入 input() 获取字符串,split()分割字符串,int()转换成整数。

    a,b,c=map(int,input().split())

  • 列表的排序:sorted(list1)返回排序后的列表。list1.sort()则直接对原列表进行修改。

  • 字典dict1=["键1":"值1”,"键2":"值2”,"键3":"值3”,获取值:dict1["键"]

  • 不换行输出end=""

  • "s".join(list1):将列表list1中的元素用字符串s连接起来。如果中间不需要有字符连接,就直接“”.join(list1)

参考代码及解析

方法一:最易懂的方法

1、a,b,c=map(int,input().split()):获取三个数

2、nums=sorted([a,b,c])

a,b,c=nums

对数字排序并重新赋值给abc

3、s=input():输入输出的顺序

4、for i in range(3):i取值0,1,2,作为字符串索引,用于获取字符串s中的值

5、if s[i]=="A":判断字符串是哪个字母

6、print(a,end=""):输出对应的数值,end=""进行不换行输出。

方法二:字典的方法

1、第一行:读取第一行 3 个整数存入列表。

2、第二行:列表从小到大升序排序;

3、第3-7行:构造字典,建立字母和标准大小数字的对应关系。

4、第8行:读取第二行字母字符串,去除首尾多余换行空格。

5、第9行:依次遍历字符串中每个字母,查表得到对应数字,形成结果列表。

6、第10行:print(' '.join(map(str, res)))

数字转为字符串,中间用空格相连,整体打印。

方法三:用2个列表的方法

1、w = ["A", "B", "C"]

模板列表下标和数字列表一一对应:

w [0]="A" ↔ num [0]

w [1]="B" ↔ num [1]

w [2]="C" ↔ num [2]

2、result = []

存放最终要输出的数字。

3、w.index(ch):找到字母 "A"/"B"/"C" 在模板列表 w 中的下标;用这个下标去 num 取出对应大小的数字。

4、print(' '.join(map(str, result)))

转为字符串,空格隔开输出。

如果你觉得意犹未尽,那就趁热打铁,继续挑战一下吧!

1、lst = [9, 3, 5]

lst.sort()

print(lst)

程序输出为()

A. [9,5,3]   B. [3,5,9]   C. [9,3,5]  D. 报错

2、w = ["A","B","C"]

print(w.index("B"))

运行结果是()

A. 0    B. 1    C. 2    D. "B"

点击空白处查看答案

1、答案:B

解析:列表.sort() 默认升序排列。

答案:B

解析:下标从 0 开始,"B" 位于第 1 号位置。

最新文章

随机文章