Python doctest示例失败 check_TLA首字母缩写函数问题求解
问题根因
你的doctest校验失败核心原因是函数逻辑写错了输出方式:你用print()把拼接后的字符串打印到了控制台,但doctest校验的是函数的返回值。使用print不会向调用方返回任何有效结果,函数默认会返回None,自然和测试用例预期的'GOT'/'IOU'不匹配。
另外原代码里docstring的缩进和函数体不对齐,也可能触发语法报错。
正确实现代码
def check_TLA(w1, w2, w3): ''' >>> check_TLA("Game" , "of", "thrones") 'GOT' >>> check_TLA("impressive", "optical", "under") 'IOU' ''' return w1[0].upper() + w2[0].upper() + w3[0].upper() if __name__ == "__main__": import doctest doctest.testmod(verbose=True)
修复说明
- 核心改动:将函数内的
print替换为return,把拼接完成的三字母缩写作为函数返回值返回,满足doctest的校验规则 - 调整了docstring的缩进,和函数内部代码保持4空格缩进,避免语法问题
- 运行代码后两个测试用例会全部通过:传入
("Game" , "of", "thrones")时取三个单词首字母转大写拼接得到'GOT',传入("impressive", "optical", "under")时得到'IOU',完全匹配需求。
内容的提问来源于stack exchange,提问作者JoyboyRod
相关产品推荐
相关产品推荐

