从python中的列表中找到算术级数中缺少的整数

时间:2017-07-06 03:36:33

标签: python

我的代码返回大小为10,100,1000,10000和100000的数组的正确缺失整数,但随后返回错误"达到最大缓冲区:已向stdout写入太多信息。过程以SIGKILL信号过早退出。 "

这使我无法完成Codewars练习。我做错了吗?不知怎的,有一种正确的方法来完成这个练习,我想我已经有了它

def find_missing(sequence):
    s1 = []    
    a = sequence[1] - sequence[0]
    c = sequence[0]
    s1.append(c)
    for x in range(0,len(sequence)):
        c += a
        s1.append(c)

    d = set(s1)
    e = set(sequence)
    print(d)
    print(e)
    f = [i for i in d if i not in e]

    return f[0]

3 个答案:

答案 0 :(得分:0)

如果我理解正确的问题不会itertools.count() zip()解决此问题,例如:

import itertools as it

def find_missing(sequence):
    for x, y in zip(it.count(sequence[0], sequence[1]-sequence[0]), sequence):
        if x != y:
            return x

注意:诊断print()可能是您的问题。

答案 1 :(得分:0)

错误消息“已将太多信息写入stdout。”

删除print()调用 - stdout(默认情况下)写入print()的输出,因此似乎Codewars服务器不喜欢你打印这么多。

答案 2 :(得分:0)

您可以尝试刷新缓冲区。使用类似print(a, flush=True)的打印语句,看看它是否有效。或者只是删除打印语句。