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

相同Python代码每次运行输出不一致原因咨询及预期输出实现请求

问题原因
  • Python的set属于无序集合,不会保留元素的插入顺序,调用''.join(se)拼接字符时的顺序完全随机,是每次运行输出不一致的核心原因。
  • 字符串分割逻辑错误:你错误地将分块总数n作为切片步长,实际需求是将原字符串按长度k切割为等长子串,当前代码拿到的子串不符合处理要求。
  • 额外输出None的原因:函数没有定义返回值,调用print(merge_the_tools(s,3))时会打印函数默认的返回值None。
修复方案

按需求调整分割逻辑,同时使用保留插入顺序的去重方案替代set,Python 3.7及以上版本可直接利用字典保留插入顺序的特性实现,代码如下:

s='AABCAAADA'
def merge_the_tools(size,k):
    block_count = len(size) // k
    for i in range(block_count):
        # 按k长度切割子串
        sub_str = size[i*k : (i+1)*k]
        # 按原顺序去重
        unique_sub = ''.join(dict.fromkeys(sub_str).keys())
        print(unique_sub)

# 无需额外print,函数内部已处理输出
merge_the_tools(s,3)

如果需要兼容Python 3.7以下版本,可以手动实现顺序去重逻辑:

s='AABCAAADA'
def remove_dup_keep_order(s):
    seen = set()
    res = []
    for c in s:
        if c not in seen:
            seen.add(c)
            res.append(c)
    return ''.join(res)

def merge_the_tools(size,k):
    block_count = len(size) // k
    for i in range(block_count):
        sub_str = size[i*k : (i+1)*k]
        print(remove_dup_keep_order(sub_str))

merge_the_tools(s,3)

上述代码运行后可稳定输出预期结果:

AB
CA
AD

内容的提问来源于stack exchange,提问作者ASHUTOSH RAI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:57:03