python-排序查找

将主程序放置上方报错函数未定义,放置下方告知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,变量使用要先定义。请采纳!!