Python实现姓名格式化程序提交时报EOFError无输出问题求助
问题原因
- 你当前的代码调用了5次
input()函数,每次input()会读取独立的一行输入,但题目要求的输入是单个行内用空格分隔的人名,测试用例只提供了1行输入,代码读到第2次input()时就没有后续输入可以读取,直接抛出EOFError异常终止运行,自然没有输出。 - 额外定义的
lastName2、firstName2变量无实际作用,也不符合题目的输入规则。
修复方案
先单次读取整行输入,用split()方法按空格切割为名字列表,通过判断列表长度区分是双段姓名(无中间名)还是三段姓名(有中间名),再按规则拼接输出即可。
修复后代码:
# 读取整行输入,按空格切割为名字列表 name_parts = input().split() if len(name_parts) == 3: # 有中间名的情况:firstName middleName lastName first, middle, last = name_parts print(f"{last}, {first[0]}.{middle[0]}.") elif len(name_parts) == 2: # 无中间名的情况:firstName lastName first, last = name_parts print(f"{last}, {first[0]}.")
效果验证
- 输入
Pat Silly Doe,输出Doe, P.S.,符合示例1要求 - 输入
Julia Clark,输出Clark, J.,符合示例2要求
内容的提问来源于stack exchange,提问作者jemcmorrow
相关产品推荐
相关产品推荐

