题目描述
来源
OpenJudge网站 —— 百练习题集-第2752号习题
要求
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(inc)、自然逆序(dec)、忽略大小写顺序(ncinc)、忽略大小写逆序(ncdec)等。
输入
输入有多行,第一行为一个表明排序方式的字符串见题面,第二行为字符串的数目。
其余各行每行一个字符串,字符串中间可能空格,前后也可能有空格,但前后的空格要忽略。
输出
输出也有多行,按指定的顺序输出输入的字符串。
样例输入
ncdec
3
Hello World!
You’re right!
haha! you’re wrong!
样例输出
You’re right!
Hello World!
haha! you’re wrong!
来源
JP06
解题思路
- 不忽略大小写排序的做法是,排序方法sort的key参数设置为: key = None。这也是key参数的默认值。
- 忽略大小写排序的做法是,排序方法sort的key参数设置为: key = str.upper。排序的时候,所有参与排序的字符串元素全变成大写后参与比较。
- 采用升序(inc)排序的做法是,排序方法sort的reverse参数设置为False,即reverse=False。
- 采用降序(dec)排序的做法是,排序方法sort的reverse参数设置为True,即reverse=True。
参考答案
order = input().strip()
key_label = None
if order[0] == 'n':
key_label = str.upper #忽略大小写——全变为大写。str.upper是字符串类的upper方法。
reverse_label = False
if "dec" in order:
reverse_label = True #逆序
n = int(input())
lines = [input() for i in range(n)]
lines.sort(key=key_label, reverse=reverse_label)
for s in lines:
print(s)
测试用例
-
题目描述给出的测试用例覆盖了忽略大小写降序排序的情形。
-
忽略大小写降序排序,输入的字符串的顺序与题目描述给出的测试用例不同。
样例输入
ncdec
3
Hello World!
haha! you’re wrong!
You’re right!
样例输出
You’re right!
Hello World!
haha! you’re wrong! -
不忽略大小写,降序排序。
样例输入
dec
3
Hello World!
You’re right!
haha! you’re wrong!
样例输出
haha! you’re wrong!
You’re right!
Hello World! -
不忽略大小写,升序排序。
样例输入
inc
3
Hello World!
You’re right!
haha! you’re wrong!
样例输出
Hello World!
You’re right!
haha! you’re wrong! -
忽略大小写,升序排序。
样例输入
ncinc
3
Hello World!
You’re right!
haha! you’re wrong!
样例输出
haha! you’re wrong!
Hello World!
You’re right!
小结
- 本题中,四种排序要求通过key参数和reverse参数的设置来落实。
- 学会灵活运用列表的sort方法,包括key参数和reverse参数的用法,能够应付各种排序要求。