【发布时间】: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谁能帮帮我吗? 请..... '
【问题讨论】:
-
因为你把你的函数不必要地放在了一个类中,你需要将它称为
Utility.binarySearch而不仅仅是binarySearch
标签: python python-3.x