You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Python字符串字符排序函数及解决代码输出大量'+'的问题

问题解答

关于字符串字符排序的Python函数

Python内置的sorted()函数就能直接用来排序字符串中的字符。它接收字符串后会返回按Unicode码点排序的字符列表,搭配str.join()就能拼接成排序后的字符串。示例:

s = "3113"
sorted_s = ''.join(sorted(s))
print(sorted_s)  # 输出 "1133"

你的代码错误分析与修正

你代码里出现大量+的问题,根源在于多余的第二个for循环:

  • 初始时b是存储数字字符的列表,比如['1','1','3','1','3']
  • 进入第二个循环后,第一次迭代就把b赋值为'+'.join(sorted(b)),此时b变成了字符串"1+1+1+3+3"
  • 后续迭代会把这个字符串当成可迭代对象,每次执行b='+'.join(sorted(b))时,sorted("1+1+1+3+3")会把所有字符排序(+的Unicode码点比数字小,会排在最前面),反复拼接后就会累积大量+。

修正方案1:简化原代码

删除多余的循环,直接排序拼接即可:

a = input()
b = []
for i in a:
    if i != '+':
        b.append(i)
b = '+'.join(sorted(b))
print(b)

修正方案2:更简洁的列表推导式写法

a = input()
result = '+'.join(sorted([c for c in a if c != '+']))
print(result)

修正方案3:贴合输入格式的split写法

因为你的输入是+分隔的数字串,用split拆分后排序再拼接,逻辑更清晰,还能兼容多位数场景(比如"12+3+5"):

a = input()
parts = a.split('+')
parts.sort()
result = '+'.join(parts)
print(result)

内容的提问来源于stack exchange,提问作者Ali Shokri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:52:42