Python实现lastF函数:不使用split()完成姓氏前置的姓名格式转换
问题排查与无
split()的实现方案 现有代码的逻辑偏差
- 循环触发时机错误:代码进入
for循环后第一次遍历就执行return,后续循环流程完全不会运行,根本达不到遍历解析字符串的目的 - 索引取值错误:
n[-1]获取的是整个字符串的最后一个单字符,不是完整的LastName;n[0][0]的嵌套索引在当前循环逻辑下没有实际意义
适配当前学习进度的实现思路
由于输入是固定的FirstName LastName格式,两个名字之间仅存在一个分隔空格,完全不需要用split()方法拆分字符串,只要定位到这个空格在字符串中的位置,就能分别取到前后两部分的内容:
- 逐字符遍历输入字符串,记录空格对应的索引位置
- 基于空格的索引位置,切出空格前的FirstName、空格后的LastName
- 按要求拼接成目标格式的字符串:取LastName全文、取FirstName的首字母,按
"LastName, 名首字母."的格式组装
对应代码实现(基础循环版本,无需掌握split()/enumerate())
def lastF(n): space_pos = 0 char_count = 0 # 逐字符找分隔空格的位置 for c in n: if c == ' ': space_pos = char_count break char_count += 1 # 基于位置切分名字两部分 first_name = n[:space_pos] last_name = n[space_pos + 1:] # 按要求返回拼接结果 return f"{last_name}, {first_name[0]}."
调用测试效果
>>> lastF('John Locke') 'Locke, J.'
注意:这个实现默认输入完全符合题目给出的格式(仅含一个空格分隔的名和姓),不需要额外处理多空格、多段姓名的异常场景,刚好匹配当前题目的要求。
内容的提问来源于stack exchange,提问作者Darren
相关产品推荐
相关产品推荐

