猿问

python函数不返回任何东西

我正在尝试解决这个问题:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。我想出了这个代码:


def almostIncreasingSequence(seq):

    count_2 = 0

    for element in seq:

        count = 0

        seq.remove(element)

        for i in range(len(seq)-1):

            if seq[i] < seq[i+1]:

                count += 1

            else:

                break

        if count == len(seq):

            return True

        else:

            seq = [element]+ seq

            count_2 += 1

    if count_2 == len(seq):

        return False

问题是,当我提供输入时,该函数不执行任何操作。例如在交互式 shell 中:


>>>print(almostIncreasingSequence([10,1,2,3,4,5]))

>>None

如果我不使用打印:


>>>almostIncreasingSequence([10,1,2,3,4,5])

>>>

它什么都不返回,它应该为这个特殊序列返回 True 。


Cats萌萌
浏览 199回答 2
2回答

阿波罗的战车

您的代码有两个问题:1) 在第 11 行:if&nbsp;count&nbsp;==&nbsp;len(seq):应该替换为if&nbsp;count&nbsp;==&nbsp;len(seq)&nbsp;-1:2)在你的 for 循环中你迭代 seq,但在循环中改变 seq。这让python感到困惑。我在更正后测试了您的代码,它似乎工作正常。不过,您可能会考虑更有效的算法。
随时随地看视频慕课网APP

相关分类

Python
我要回答