python函数不返回任何内容

2024-04-26 01:37:34 发布

您现在位置: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中的示例:

^{pr2}$

如果我不使用打印:

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

它什么也不返回,对于这个特殊的序列应该返回True。在


Tags: intrue元素forlenreturnifcount
2条回答

你的问题与“如果-其他”有关。如果添加如下所示的打印,则可以看到错误:

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
            print("count1",count, len(seq))
        else:
            break
    if count == len(seq):
        return True
    else:
        seq = [element]+ seq
        count_2 += 1
        print("count2",count_2, len(seq))
if count_2 == len(seq):
    return False

例如用[1,2,3]调用函数,您将得到以下输出:

^{pr2}$

当计数等于len(seq)时,函数返回True或False。您可以从输出计数不等于len(seq),因此不返回任何内容。您需要在return中添加“else”。在

您的代码有两个问题:

1)第11行:

if count == len(seq):

应替换为

^{pr2}$

2)在for循环中,迭代seq,但在循环中更改seq。这让python感到困惑。在

我在更正后测试了你的代码,它似乎运行得很好。 不过,你可以考虑一个更有效的算法。在

相关问题 更多 >