python,是不是有间隔错误?
我甚至都不好意思问这个问题,但是python出于某种原因,keep给了我一个“l”的错误python,是不是有间隔错误?,python,binary,Python,Binary,我甚至都不好意思问这个问题,但是python出于某种原因,keep给了我一个“l”的错误 def二进制搜索(l,targetValue): 低=0,高=len(阵列) 虽然目标值较低: 低=中-1; 否则l[mid]
def二进制搜索(l,targetValue):
低=0,高=len(阵列)
虽然目标值较低:
低=中-1;
否则l[mid]
虽然您的间距不正常,但实际上这不是问题所在
问题是由于您正在将else
与表达式一起使用。相反,您需要使用elif
:
elif l[mid] < targetValue:
else
表示“对于任何其他内容,请执行此操作”。因此,它既不计算也不支持表达式。您的最后一行“#这一行似乎是问题所在”应该是一个ELIF或一个else,后面没有任何语句。
例如,您不需要“ELSE{Condition}”。ELSE的意思是“其他一切”。哦,不,它出现了错误。您可能在文件中混合了制表符和空格吗?现在它还说不能将其分配给literal,我认为将len(数组)分配给high是可以接受的否?@user2928929-不,您将要执行
low,high=0,len(数组)
。好的,它工作了!只是好奇,这到底有什么不同,我之前写的不是说了同样的话吗?@user2928929-实际上没有。你之前写的东西是这样计算的:low=(0,high)=len(array)
。换句话说,low
等于tuple(0,high)
,它等于len(数组)
。而且,您无法将元组(即文字)分配给值(因此出现错误)。但是,我的元组的读取方式是这样的(低,高)=(0,len(数组))
。尽管两者看起来非常相似,但我的语法是有效的。以下是一个参考:
elif l[mid] < targetValue:
else: