Python姓名格式转换脚本代码逻辑错误排查请求
人名格式转换代码问题排查与修正
需求说明
需要编写程序处理两种格式的人名转换:
- 格式1:输入为
firstName middleName lastName,输出格式为lastName, firstInitial.middleInitial.(示例:输入Pat Silly Doe,输出Doe, P.S.) - 格式2:输入为
firstName lastName,输出格式为lastName, firstInitial.(示例:输入Julia Clark,输出Clark, J.)
错误代码
用户编写的代码无法正常运行,代码如下:
Name = str(input()) token = Name.split() if token == 3: print(token[2] + ',', token[0][0] + '.' + token[1][0] + '.') else: print(token[1] + ',', token[0][0] + '.')
问题分析
代码的核心错误是判断逻辑有误:token是split()返回的字符串列表,直接和数字3比较永远不会成立,正确的判断应该是检查列表的长度,即使用len(token) == 3。
此外可以做两处优化:
input()本身返回字符串类型,无需额外用str()强制转换- 使用Python的f-string格式化语法,让字符串拼接更简洁易读
修正后的代码
name = input() tokens = name.split() if len(tokens) == 3: print(f"{tokens[2]}, {tokens[0][0]}.{tokens[1][0]}.") else: print(f"{tokens[1]}, {tokens[0][0]}.")
或者更清晰的变量解构写法:
name = input() tokens = name.split() if len(tokens) == 3: first_name, middle_name, last_name = tokens print(f"{last_name}, {first_name[0]}.{middle_name[0]}.") else: first_name, last_name = tokens print(f"{last_name}, {first_name[0]}.")
测试验证
- 输入
Pat Silly Doe,输出Doe, P.S. - 输入
Julia Clark,输出Clark, J.
内容的提问来源于stack exchange,提问作者Liza Mawu Interstellar noise
相关产品推荐
相关产品推荐

