我的代码返回大小为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]
答案 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)
的打印语句,看看它是否有效。或者只是删除打印语句。