Python首字母缩写生成脚本问题:功能异常且效率待优化
解决首字母缩写词生成脚本的异常与效率问题
原代码存在的问题
- 索引越界+条件逻辑错误:当
i=1时,stng[i-2]会访问索引-1,直接触发IndexError;同时判断空格的逻辑错误,应该检查前一个字符是否为空格(stng[i-1] == ' '),而非判断空字符串''。 - 未支持多输入列表:原代码仅处理单个字符串输入,不符合需求中“以列表形式接收多个字符串”的要求。
- 效率低下:手动逐个字符遍历拼接的方式冗余,且字符串
+=操作因不可变特性会频繁生成新对象,影响性能。
优化后的解决方案
以下代码完全满足需求,同时解决了异常问题并提升了效率:
def generate_acronyms(strings_list): acronyms = [] for s in strings_list: # 按空格分割成单词列表,自动忽略连续空格 words = s.split() # 处理空字符串或全空格的边界情况 if not words: acronyms.append("") continue # 提取每个单词首字母并转为大写,拼接成缩写 acronym = ''.join(word[0].upper() for word in words) acronyms.append(acronym) return acronyms # 示例使用:支持用户输入多个句子(逗号分隔) if __name__ == "__main__": user_input = input("请输入多个句子,用逗号分隔:") input_list = [sentence.strip() for sentence in user_input.split(',')] results = generate_acronyms(input_list) # 输出每个句子对应的缩写 for original, acronym in zip(input_list, results): print(f"'{original}' -> {acronym}")
优化点说明
- 高效的单词分割:使用内置
split()方法分割字符串,底层经过优化,比手动遍历字符快得多,还能自动处理连续空格的情况。 - 高效字符串拼接:用生成器表达式结合
join()方法拼接字符,避免了+=操作的频繁内存分配,性能更优。 - 边界情况处理:针对空字符串、全空格的输入做了兼容,不会触发索引错误。
- 满足多输入需求:直接接收字符串列表作为参数,批量生成缩写。
内容的提问来源于stack exchange,提问作者LSAADITYACHOWDARYGORTHI
相关产品推荐
相关产品推荐

