Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数没有';我什么也不退_Python_Python 3.x_Function_Loops - Fatal编程技术网

python函数没有';我什么也不退

python函数没有';我什么也不退,python,python-3.x,function,loops,Python,Python 3.x,Function,Loops,我试图解决这个问题:给定一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 我想出了这个密码: 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] <

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

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
如果我不使用打印:

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

它不返回任何内容,对于这个特殊序列,它应该返回True。

您的问题与“if-else”有关。如果按如下方式添加打印,则可以看到错误:

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

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

您的代码有两个问题:

1) 第11行:

if count == len(seq):
应该由

if count == len(seq) -1:
2) 在for循环中,您迭代seq,但在循环中更改seq。这让python感到困惑

我在更正代码后测试了您的代码,它似乎工作得很好。
不过,您可能会想到一种更有效的算法。

您能分享一个序列示例吗?您是否尝试过调试器以查看发生了什么?您的if/else语句中至少有两个case没有返回任何内容,可能是沿着其中一条路径。如果您发布了调用代码和您看到的输出,这会很有帮助。@JackAidley它没有输出,这就是问题所在。@Jeril例如:几乎递增序列([10,1,2,3,4,5])它的返回值为True,但不为True
if count == len(seq):
if count == len(seq) -1: