技术问询:按输入字符串长度索引构建动态列表并合并为字符串
实现按字符串长度插入的动态列表并合并结果
原代码存在的问题
- 嵌套
while循环导致逻辑混乱,第一次输入后直接进入内层循环,外层循环完全失去作用 - 初始容器
split_string_list被错误定义为第一个输入字符串的字符列表,而非用于存储完整字符串的空列表 - 插入操作时将字符串转为字符列表插入,导致最终列表嵌套列表,无法直接合并成目标字符串
- 循环条件
repeat_counter < user_input_count会少处理一次输入(比如输入n=3时仅处理2次)
修正后的实现代码
# 获取需要输入的字符串数量 input_count = int(input("Enter number of elements: ")) # 初始化空列表,用于存储所有输入的字符串 string_container = [] for idx in range(input_count): current_string = input(f"Enter the value of input #{idx+1}: ") # 计算当前字符串的长度,作为插入索引 insert_pos = len(current_string) # 将字符串插入到对应索引位置 string_container.insert(insert_pos, current_string) # 合并列表中所有字符串,得到最终结果 final_merged_string = ''.join(string_container) print("最终合并字符串:", final_merged_string)
代码说明
- 使用
for循环遍历输入次数,比while循环更简洁且不易出错 - 每次输入字符串后,直接以其长度作为插入索引,调用
insert()方法将字符串存入容器列表 - 最后通过
''.join(string_container)将列表中所有字符串拼接成一个完整的最终字符串 - 当插入索引超过当前列表长度时,
insert()会自动将元素添加到列表末尾,符合需求逻辑
测试示例
假设输入数量为3:
- 输入第一个字符串:
"a"(长度1),列表变为["a"] - 输入第二个字符串:
"bb"(长度2),插入索引2,列表变为["a", "bb"] - 输入第三个字符串:
"ccc"(长度3),插入索引3,列表变为["a", "bb", "ccc"]
最终合并结果:"abbccc"
内容的提问来源于stack exchange,提问作者ebordenave
相关产品推荐
相关产品推荐

