【问题标题】:Error in "BinarySearch String and integer Error"“BinarySearch 字符串和整数错误”中的错误
【发布时间】:2020-01-28 08:30:15
【问题描述】:

我想 print 调用 Util 类中的 binarySearch 方法,并希望返回索引值以及字符串或数字。

    class Utilily :
        @staticmethod
        def binarySearch(arr, l, r, key): # l = low, r = high
            if (r >= l):
                mid = int(l + (r - l)/2)
                if (arr[mid] == key):
                    return mid
                elif (arr[mid] > key):
                    return (binarySearch(arr,l,mid-1,key))
                 else:
                    return (binarySearch(arr,mid+1,r,key))
            else:
                return -1
    u = Utility()
    def main():
        n = int(input("Press \n 1. Binary Search Integer \n 2. Binary Search String \n 3. Exit \n"))
       if n == 1:
            n = int(input("Enter the Number of elements you want to insert:"))
            arr = list()
            print("Enter the elements:")
            for i in range(n):
                arr.append(int(input()))
            key = int(input("Enter the Key element:"))
            result = u.binarySearch(arr, 0, len(arr)-1, key)
            if (result != -1):
                print("Element is present at index %d" % result)
            else:
                print("Element is not present in array")
        elif n == 2:
            n = int(input("Enter the Number of elements you want to insert:"))
            arr = list()
            print("Enter the elements in assending order: (i.e from A-Z)")
            for i in range(n):
                    arr.append(input())
            key = input("Enter the Key element:")
            result = u.binarySearch(arr, 0, len(arr)-1, key)
            #print(result)
            if (result != -1):
                    print("Element is present at index %d" % result)
            else:
                    print("Element is not present in array")
        elif n == 3:
            exit()

'整数错误

新闻
 1. 二分查找整数
 2.二分查找字符串
 3.退出 1 输入要插入的元素数量:5 输入元素:1 2 3 4 5 输入关键元素:5 Traceback(最近
最后调用):文件“my.py”,第 47 行,在
    main() 文件“my.py”,第 26 行,在 main
    结果 = u.binarySearch(arr, 0, len(arr)-1, key) 文件“my.py”,第 11 行,在 binarySearch
    return (binarySearch(arr,mid+1,r,key)) NameError: name 'binarySearch' is not defined

但我需要输出“索引 4”

字符串错误

 按
 1. 二分查找整数
 2.二分查找字符串
 3. 退出 2 输入要插入的元素数量:5 按顺序输入元素:(即从 A-Z)a b c d e 输入
关键元素:e Traceback(最近一次调用最后一次):文件“my.py”,行
47,在
    main() 文件“my.py”,第 38 行,在 main
    结果 = u.binarySearch(arr, 0, len(arr)-1, key) 文件“my.py”,第 11 行,在 binarySearch
    return (binarySearch(arr,mid+1,r,key)) NameError: name 'binarySearch' is not defined 
谁能帮帮我吗? 请..... '

【问题讨论】:

标签: python python-3.x


【解决方案1】:

改变:

return (binarySearch(arr,l,mid-1,key))

收件人:

return (Utility.binarySearch(arr,l,mid-1,key))

然后改变:

return (binarySearch(arr,mid+1,r,key))

收件人:

return (Utility.binarySearch(arr,mid+1,r,key))

为什么?因为binarySearch 是在Utility 类中声明的方法,而不是全局函数。

【讨论】:

  • 感谢您的建议先生,实际上我放错了实用程序类名称我得到了正确的输出。
猜你喜欢
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
相关资源
最近更新 更多