首先按小写顺序排序,然后按大写顺序排序,然后将数字排序为

时间:2020-10-18 22:02:47

标签: python loops sorting nested extend

我编写的代码如下。即使我得到所需的输出,有人可以告诉我这里是什么问题吗?

p = list(input())
upper_case=[]
lower_case=[]
no=[]
for i in p:
    if i.isalpha() and i.isupper():
        upper_case.append(i)
    if i.isalpha() and i.islower():
        lower_case.append(i)
    if i.isdigit():
        no.append(i)
upper_case.sort()
lower_case.sort()
no.sort()
lower_case.extend(upper_case)
lower_case.extend(no)
output = "".join(lower_case)
print(output)

输入为Sorting1234。我的输出是ginortS1234。预期的输出为ginortS1324。我们也必须对数字进行排序,以使奇数先出现,您可以帮助我简化这段代码

1 个答案:

答案 0 :(得分:0)

我假设这是家庭作业或某些东西,而您应该以某种方式或某种方式来做呢?规格是什么?

无论如何我都会缩短您的代码

p = "Sorting1234"
upper_case = sorted([i for i in p if i.isupper()])
lower_case = sorted([i for i in p if i.islower()])
no = sorted([i for i in p if i.isdigit()])

output = "".join(lower_case + upper_case + no)
print(output)

或者更好,因此您不必进行多次排序:

p = "Sorting1234"
p = sorted(p)

output = [i for i in p if i.islower()] + \
    [i for i in p if i.isupper()] + \
    [i for i in p if i.isdigit()]

print("".join(output))
相关问题