Python姓名格式化函数双空入参输出残留Name:前缀问题排查
问题根因
条件分支的匹配顺序错误:Python的if-elif结构会从上到下依次校验判断条件,命中第一个符合条件的分支后就会终止后续判断,不会再执行后面的条件校验。
你写的双参数同时为空的判断放在了单参数为空的判断之后,当两个入参都为空时,第一个判断len(first_name)==0已经满足,会直接执行对应分支的string="Name: "+last_name,拼接空的last_name后就得到了不符合预期的Name: ,双空判断的分支永远不会被命中。
修复方案
把双参数为空的判断移到所有分支的最前面即可,修正后的代码如下:
def format_name(first_name, last_name): if len(first_name) == 0 and len(last_name) == 0: string = "" elif len(first_name) == 0: string = "Name: " + last_name elif len(last_name) == 0: string = "Name: " + first_name else: string = "Name: " + last_name + ", " + first_name return string
修复后运行所有测试用例,输出完全符合预期。
内容的提问来源于stack exchange,提问作者petra
相关产品推荐
相关产品推荐

