You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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。

此外可以做两处优化:

  1. input()本身返回字符串类型,无需额外用str()强制转换
  2. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:30:57