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: