如何用Python创建循环为字符串元素间加空格至指定长度?
解决单词间补空格至指定长度的问题
你的代码问题分析
你的代码逻辑存在几个关键问题:
- 遍历原字符串时,没有更新
string的长度,len(string)始终是初始值,且你还写错了变量名(num应为n),导致判断条件无法正确触发多次补空格操作 - 每次遇到空格就直接在原字符串末尾加空格,完全没实现“在单词间隙补空格”的需求,只会在字符串最后多加一个空格
正确实现思路
要在单词间均匀分配空格直到总长度≥n,步骤如下:
- 把原字符串拆成独立单词列表
- 计算当前字符串总长度,以及需要补充的额外空格数
- 把额外空格均匀分配到各个单词间隙(间隙数大于0时),前几个间隙可多分配一个空格保证均匀性
- 最后把单词和对应数量的空格拼接起来
代码实现
string = "you are great" n = 20 # 拆分得到独立单词列表 words = string.split() # 计算原字符串总长度:单词总长度 + 原有间隙的空格数(每个间隙1个) original_length = sum(len(word) for word in words) + (len(words) - 1) # 计算需要补充的额外空格数,确保不会出现负数 extra_spaces = max(0, n - original_length) if len(words) == 1: # 只有单个单词时,直接在末尾补空格 result = [words[0] + ' ' * extra_spaces] else: gaps = len(words) - 1 # 每个间隙基础要加的空格数 base_spaces = extra_spaces // gaps # 前几个间隙需要多补1个空格的数量 remainder = extra_spaces % gaps res_parts = [] for i in range(gaps): res_parts.append(words[i]) # 前remainder个间隙多补1个空格,加上原有的1个空格 add_spaces = base_spaces + 1 if i < remainder else base_spaces res_parts.append(' ' * (1 + add_spaces)) # 拼接最后一个单词 res_parts.append(words[-1]) result = [''.join(res_parts)] print(result)
运行后输出符合预期:
["you are great"]
内容的提问来源于stack exchange,提问作者sim0es
相关产品推荐
相关产品推荐

