Closed. This question is off-topic。它当前不接受答案。                                                                                                                                                                                                                                                                                                                        想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。                                                4年前关闭。                                                                                                                    作为在线编程课程(6.00.1x)的一部分,我被要求(Quiz p8)创建一个函数satisfiesF(L),该函数使用L就地过滤f,然后返回。L是为我定义的函数,该函数为应保留在列表中的项目返回f其余列表项应与以前的顺序相同我已经为该问题编写了2个解决方案,对其进行了测试并提交,但均被拒绝。没有提供任何理由,因为该问题旨在测试我们提出自己的测试用例的能力。因此,请不要提供有效的代码,而应大致了解发生了什么问题。我目前看到3种主要可能性:我误解了这个问题我犯了一个微妙的编程错误edX的测试用例犯了一个错误(不太可能)这是我的两种解决方案:def satisfiesF(L): L[:] = [i for i in L if f(i)] return len(L)def satisfiesF(L): i = 0 while len(L) > i: if f(L[i]): i += 1 else: L.pop(i) return len(L)这是逐字记录问题的完整说明:  编写名为True的Python函数,该函数具有规范  下面。然后使函数调用satisfiesF。您的  代码应如下所示:def satisfiesF(L): """ Assumes L is a list of strings Assume function f is already defined for you and it maps a string to a Boolean Mutates L such that it contains all of the strings, s, originally in L such that f(s) returns True, and no other elements. Remaining elements in L should be in the same order. Returns the length of L after mutation """ # Your function implementation hererun_satisfiesF(L, satisfiesF)    例如,对于您自己的run_satisfiesF(L, satisfiesF)测试,请参见以下测试功能satisfiesF和测试代码:def f(s): return 'a' in sL = ['a', 'b', 'a']print satisfiesF(L)print L    应打印:2['a', 'a']    在下面的框中粘贴整个函数f,包括定义。定义函数后,对satisfiesF进行函数调用。不要定义run_satisfiesF(L, satisfiesF)或f。不要留下任何调试打印语句。    对于这个问题,您将无法看到我们运行的测试用例。这个问题将测试您提出自己的测试用例的能力。并且,出于完整性考虑,以下是我最新的一组测试(我正在使用run_satisfiesF):>>> L = ['bat', 'cat', 'dog', 'elephant']>>> satisfiesF(L) == len([i for i in L if f(i)])True>>> [i for i in L if not f(i)][]>>> L = ['ab', 'b', 'ac']>>> satisfiesF(L)2>>> L['ab', 'ac']>>> L = ['a', 'a', 'b']>>> satisfiesF(L)2>>> L['a', 'a']>>> L = ['a', 'a', 'a']>>> satisfiesF(L)3>>> L['a', 'a', 'a']>>> L = ['b', 'c', 'd', 'a']>>> satisfiesF(L)1>>> L['a']这些测试按照问题中的建议使用doctest。我尚未使用def f(s): return 'a' in s的其他功能进行测试,但我认为这不会影响结果。我尝试用f替换satisfiesF(L),但是测试仍然通过。Other questions about 6.00.1x Quiz p8我不疯的证明: 最佳答案 我无法重现您的问题:第二:首先还要签出。我正在考虑的那个:for i in range(len(L)-1,-1,-1): if f(L[i]) != True: del(L[i])return len(L)还签出。关于python - 测试不纯函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32826897/
10-10 16:26