我真不是红中 2023-01-18 15:17 采纳率: 0%
浏览 23
已结题

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)

  • 写回答

4条回答 默认 最新

  • qq_1311209878 2023-01-18 15:43
    关注

    在上面的代码中,出现错误 "函数未定义" 和 "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()函数将输入转换为整数列表时,需要确保输入格式正确,例如输入的数字之间应该用空格分隔。

    如果我的回答对您有帮助,请及时采纳,谢谢~

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月1日
  • 创建了问题 1月18日