Python如何从姓名列表提取首名中间名首字母及完整姓氏并拼接字符串
问题原因
- 变量覆盖问题:
first、mid、last三个变量定义在for循环内部,每次遍历都会覆盖上一次的结果,循环结束后只保留了最后一个姓名「George P Burdell」的处理结果,所以输出只有最后一条。 - 姓名拆分逻辑冗余:先把输入的姓名列表用逗号拼接再按空格拆分,再手动切分成3个子列表的写法属于硬编码适配3个输入的场景,扩展性极差,只要输入姓名数量变化就会报错。
- 结果收集逻辑缺失:没有把每个姓名的处理结果存到统一列表里,最后也没有把所有结果拼接成完整字符串。
- 格式错误:原来的拼接逻辑里空格写在了点号前面,输出会出现
G .P.这类不符合预期的格式。
修正后代码
def fancy_me(name_list): processed_names = [] # 直接遍历输入的每一个完整姓名 for full_name in name_list: # 拆分单个姓名的首名、中间名、姓氏 first, mid, last = full_name.split() # 按要求格式化姓名后存入列表 formatted_name = f"{first[0]}. {mid[0]}. {last}" processed_names.append(formatted_name) # 把所有处理后的姓名用逗号加空格拼接为单个字符串返回 return ", ".join(processed_names) print(fancy_me(["First Middle Last", "David Andrew Joyner", "George P Burdell"]))
运行结果
运行后输出和预期完全一致:F. M. Last, D. A. Joyner, G. P. Burdell
内容的提问来源于stack exchange,提问作者PlumChy
相关产品推荐
相关产品推荐

