程序通过了除最后一个测试用例之外的所有其他测试用例。如何修复最后一个测试用例?

2024-09-30 10:32:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要找出一个数字中的最大重复次数,并且我似乎已经在test_sweep的第31行中找到了除testcase之外的所有其他测试用例

我曾试图重写此代码,但我相当确定我的代码应该可以工作

def max_run(l: list) -> list:
    if len(l) <= 0:
        return 0
    if len(l) == 1:
        return 1

    bal = 0
    maxbal = 0
    compare_item = l[0]
    for item in l:
        if item == compare_item:
            bal = bal + 1
        else:
            compare_item = item
            if bal >= maxbal:
                maxbal = bal
                bal = 1
    return maxbal

class TestMaxRun(unittest.TestCase):
    def test_run(self):
        before = [1, 1, 3, 3, 3, 5]
        saved = before.copy()
        self.assertEqual(sweep.max_run(before), 3)
        self.assertEqual(before, saved)
        self.assertEqual(sweep.max_run([]), 0)
        self.assertEqual(sweep.max_run([42]), 1)
        self.assertEqual(sweep.max_run([1, 2, 3]), 1)
        self.assertEqual(sweep.max_run([3, 3, 3, 2, 3]), 3)
        self.assertEqual(sweep.max_run([1, 2, 2, 3]), 2)
        self.assertEqual(sweep.max_run([3, 4, 5, 5, 5]), 3)

应该通过所有错误。第31行的最大运行失败


Tags: run代码testselfreturnifdefitem
1条回答
网友
1楼 · 发布于 2024-09-30 10:32:27

您的问题是没有正确处理输入末尾的长序列。在最后一个测试用例中,三个5s的序列被忽略,因为您从未检查它是否比前一个最长的序列(长度为1)长

您需要在max_run的循环外重复此代码,就在return maxbal之前:

if bal >= maxbal:
    maxbal = bal

相关问题 更多 >

    热门问题