来自Codeforce的灭霸排序问题。错误 :类型错误:'NoneType' 和'NoneType' 的实例之间不支持'<'



我是编程新手.pls 建议我的程序中的其他问题,这将提高我的编程技能

灭霸排序是一种超级反派排序算法,其工作原理如下:如果数组未排序,请打响指*删除项目的第一部分或后半部分,然后重复该过程。

给定一个输入数组,您可以使用 Thanos 排序从中获得的最长排序数组的大小是多少?

*需要无限手套。

输入 输入的第一行包含一个数字 n (1≤n≤16( — 数组的大小。n 保证为 2 的幂。

输入的第二行包含 n 个空格分隔的整数 ai (1≤ai≤100( — 数组的元素。

输出 返回您可以使用 Thanos 排序获得的排序数组的最大长度。数组的元素必须按非降序排序。

类型错误:"<"在带有注释错误的行上的"无类型"和"无类型"实例之间不受支持

def find():
a = int(input())
if a%2==0 and a<=16 and a>=1:
x = input()
l = x.split()
p= lcheck(l)
r = rcheck(l)
if p < r: # error
return r
else:
return p
else:
print("enter the array length correctly")
find()
def lcheck(l):
n = len(l)
m= sorted(l)
if  l==m:
return len(l)
else:
n=n//2
l=l[:n]
if len(l)>1:
lcheck(l)
else:
return 1  
def rcheck(l):
n = len(l)
m= sorted(l)
if  l==m:
return len(l)
else:
n=n//2
l=l[n+1:]
if len(l)>1:
rcheck(l)
else:
return 1
def splitint(x):
l = x.split()
l = list(map(int,l))
return l
find()

类型错误回溯(上次调用的最近一次( 在 42 l = list(map(int,l(( 43 返回 l ---> 44 查找((

<ipython-input-15-4486e758ce8e> in find()
6         p= lcheck(l)
7         r = rcheck(l)
----> 8         if p < r: # error
9             return r
10         else:
TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

您没有返回递归 lcheck 和 rcheck 调用的结果(没有返回 ->得到 None(,请将其更改为类似以下内容:

if len(l)>1:
return lcheck(l)
else:
return 1

更多提示:

  • lcheck 和 rcheck 共享它们的大部分代码,这是不可取
  • 您可以使用最大(P,R(
  • 使用描述性变量名称,而不仅仅是单个字母(有时很好(

您的代码将无法通过以下测试用例:

16

78 16 40 904 13 99 19 41 47 50 68 71 79 96 76

以下是您可能想尝试的工作代码:

def lcheck(a):
if a == sorted(a):
return len(a)
else:
new_a = a[:len(a)//2]
if len(new_a) > 1:
if lcheck(new_a) >= rcheck(new_a):
return lcheck(new_a)
else:
return rcheck(new_a)
else:
return 1
def rcheck(a):
if a == sorted(a):
return len(a)
else:
new_a = a[len(a)//2:]
if len(new_a) > 1:
if lcheck(new_a) >= rcheck(new_a):
return lcheck(new_a)
else:
return rcheck(new_a)
else:
return 1
if __name__=="__main__":
n = int(input())
a = list(map(int, input().split()))
if lcheck(a) >= rcheck(a):
print(lcheck(a))
else:
print(rcheck(a))

最新更新