Python简单函数添加else语句后返回值异常原因求解
问题原因
你修改后的代码无法得到正确结果的核心问题有两点:
1. 缩进语法错误
你贴出的修改后代码中for循环没有缩进在def guess()的函数体内部,就算逻辑正确也无法正常运行。修正缩进后的代码如下:
def guess(secword,thelist): for letter in thelist: if letter not in secword: return False else: return True
即便修正了缩进问题,代码依然存在逻辑错误。
2. 核心逻辑错误
函数会在第一次循环时就直接返回结果,不会完整遍历整个字母列表,完全不符合需求要求:
- 原正常版本的逻辑:遍历字母列表的所有元素,只要有一个字母不在目标字符串中就返回
False,只有全部字母都验证存在,遍历结束后才返回True,完全匹配需求。 - 修改后版本的逻辑:只会检查列表的第一个元素:如果第一个元素不在字符串里返回
False,如果第一个元素在字符串里就直接返回True,根本不会检查列表剩下的其他元素。
举个实际测试用例:假设目标字符串是apple,字母列表是['a','x','e'],修改后的代码只会验证第一个元素a存在就直接返回True,不会检查到列表里的x并不在apple中,得到的结果完全错误。
内容的提问来源于stack exchange,提问作者Mandeep Singh
相关产品推荐
相关产品推荐

