如何编写Python函数移除单词后缀ness并将heaviness转为heavy?
移除"ness"后缀并修正拼写的实现方案
要处理sadness和heaviness这两个单词,核心需求是去掉后缀"ness",其中heaviness去掉后缀后要把末尾的"i"改成"y",得到heavy。
你的代码存在几个问题:
- 没必要把字符串转成列表操作,字符串本身就支持切片和修改
- 判断条件
without_ness[:-5] == "i"逻辑错误,应该检查移除后缀后的最后一个字符 - 列表没有
replace方法,这会直接报错
下面是修正后的代码:
def remove_suffix_ness(word): # 先判断单词是否以"ness"结尾 if word.endswith("ness"): without_ness = word[:-4] # 检查移除后缀后的最后一个字符是否是"i" if without_ness[-1] == "i": # 替换最后一个"i"为"y" return without_ness[:-1] + "y" else: return without_ness # 不是以"ness"结尾的单词直接返回原词 return word # 测试 print(remove_suffix_ness("sadness")) # 输出: sad print(remove_suffix_ness("heaviness")) # 输出: heavy
代码说明:
- 用
endswith("ness")先做判断,避免处理不符合要求的单词 - 直接对字符串切片
word[:-4]去掉最后4个字符(即"ness") - 检查处理后的字符串最后一位是否为"i",如果是就切掉最后一位再加"y",否则直接返回
- 函数用
return而不是直接打印,更灵活复用
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

