Google Python Class Verbing练习的更简洁Python实现方法咨询
Google Python Class Verbing练习简洁实现
你的原写法语义基本符合要求,但存在冗余判断,还藏了个小逻辑bug,可以按下面的思路简化:
- 先处理长度小于3的边界情况,直接返回原串即可,后续逻辑天然是长度≥3的场景,不用重复判断长度条件
- 不要手动切片判断后缀,Python字符串自带的
endswith()方法就是专门用来判断后缀的,写起来简洁还不容易出错 - 没必要给s重新赋值再返回,字符串拼接完直接返回即可,减少冗余代码
精简后的实现代码
def verbing(s): if len(s) < 3: return s return s + 'ly' if s.endswith('ing') else s + 'ing'
整段核心逻辑仅2行,完全匹配题目规则。
原代码的隐藏bug
你原来写的elif s[:-3] != 'ing'判断逻辑有误:s[:-3]取的是字符串砍掉最后三位之后的前缀部分,根本不是判断结尾。举个反例,传入s='ingabc'时,字符串长度为6≥3,最后三位是'abc',按题目要求应该返回ingabcing,但你的代码里第二个if判断结尾是不是ing?不满足,进不去分支;然后elif判断砍掉最后三位的前缀是不是不等于'ing'?这里前缀正好是'ing',条件不成立,最后函数没有任何返回值,会输出None。换成endswith('ing')就可以完全规避这个问题。
测试用例验证
上述精简代码可以全部通过你给出的测试用例:
verbing('hail')返回hailingverbing('runt')返回runtingverbing('swiming')返回swiminglyverbing('do')返回doverbing('hi')返回hi
内容的提问来源于stack exchange,提问作者ready2learn
相关产品推荐
相关产品推荐

