我编写的代码如下。即使我得到所需的输出,有人可以告诉我这里是什么问题吗?
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
。我们也必须对数字进行排序,以使奇数先出现,您可以帮助我简化这段代码
答案 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))