将主程序放置上方报错函数未定义,放置下方告知demo未定义
def QuickSort(arr):
if(len(arr)<2):
return arr
else:
pivot=arr[0]
less=[i for i in arr[1:] if(i<=pivot)]
great=[i for i in arr[1:] if(i>pivot)]
return QuickSort(less)+[pivot]+QuickSort(great)
def Search(arr):
for i in range(len(arr)):
if i==flag:
print(i)
else:
demo = -1
break
list=list(map(int,input().split(' ')))
flag=int(input())
print(QuickSort(list))
Search(list)
在上面的代码中,出现错误 "函数未定义" 和 "demo 未定义" 是因为 Search 函数中的 flag 和 demo 变量没有在全局作用域中定义。
解决方案是在程序的最开始定义 flag 和 demo 变量。
另外,Search 函数中的循环条件可能不符合预期,因为在循环中,flag 是变量名而不是索引。如果您想要查找符合条件的索引,应该使用 if arr[i] == flag: 代替 if i == flag:.
修改后的代码应该是这样的:
def QuickSort(arr):
if(len(arr)<2):
return arr
else:
pivot=arr[0]
less=[i for i in arr[1:] if(i<=pivot)]
great=[i for i in arr[1:] if(i>pivot)]
return QuickSort(less)+[pivot]+QuickSort(great)
def Search(arr):
flag = int(input())
demo = -1
for i in range(len(arr)):
if arr[i] == flag:
print(i)
demo = i
break
return demo
list=list(map(int,input().split(' ')))
print(QuickSort(list))
print(Search(list))
在这里,我们在程序的开始定义了flag 和 demo变量,并在Search函数中将flag变量赋值为输入的值。在循环中,我们使用arr[i] == flag来查找符合条件的索引。
此外,在Search函数中,我们添加了一个返回值,即demo,它将返回符合条件的索引或-1(如果未找到符合条件的索引)。
还有一点要注意的是,在使用map()函数将输入转换为整数列表时,需要确保输入格式正确,例如输入的数字之间应该用空格分隔。
如果我的回答对您有帮助,请及时采纳,谢谢~
demo是干啥的,你光给它赋值又不去取值,要它何用
demo放最上面先定义,demo=0,变量使用要先定义。请采纳!!