问:我无法在以下代码中找到问题所在,错误消息是“类型为“ NoneType”的对象没有len ()”
我的代码------>
A=[31,22,14,15]
def merge(list1,list2):
output=[]
i=0
j=0
length1=len(list1)
length2=len(list2)
while i<length1 or j<length2:
if i<length1 and j<length2:
if list1[i] < list2[j]:
output +=[list1[i]]
i +=1
else:
output +=[list2[j]]
j +=1
elif i<length1:
output +=[list1[i]]
i +=1
else:
output +=[list2[j]]
j+=1
def merge_sort(list1):
if len(list1)<=1:
return list1
else:
mid=int(len(list1)/2)
left =list1[:mid]
right=list1[mid:]
sorted_left=merge_sort(left)
sorted_right=merge_sort(right)
return merge(sorted_left,sorted_right)
def print_it(lista):
merge_sort(lista)
print "OutPut : ",output
print_it(A)
答:您使用的代码是正确的,只是问题是“缩进错误”,这是由于您使用的IDE而引起的,我使用的是pycharm IDE。您可以使用以下代码:
A=[31,22,14,15]
def merge(list1,list2):
output=[]
i=0
j=0
length1=len(list1)
length2=len(list2)
while i<length1 or j<length2:
if i<length1 and j<length2:
if list1[i] < list2[j]:
output +=[list1[i]]
i +=1
else:
output +=[list2[j]]
j +=1
elif i<length1:
output +=[list1[i]]
i +=1
else:
output +=[list2[j]]
j+=1
def merge_sort(list1):
if len(list1)<=1:
return list1
else:
mid=int(len(list1)/2)
left =list1[:mid]
right=list1[mid:]
sorted_left=merge_sort(left)
sorted_right=merge_sort(right)
return merge(sorted_left,sorted_right)
def print_it(lista):
merge_sort(lista)
print "OutPut : ",output
print_it(A)