如果实例的查找在范围内可以精准找到,但是大于,我的程序就没有结果,不停止运行。比如输入88,程序就一直运行,不停止
def binary_for(li,val):
left = 0
right = len(li) - 1
while left <= left:
mid = (left + right)//2
if li[mid] == val:
return mid
elif li[mid] < val:
left = mid + 1
else:
right = mid - 1
else:
return -1
list1 = list(range(1,9))
b=binary_for(list1,88)
print(b)
第4行应该是while left <= right:这么写吧,自己跟自己比,小于等于永远成立就死循环了。
有帮助的话,请点采纳该答案~
if target < li[0] or target > li[-1]:
return -1
while left <= right:
# ...
else:
return -1
修正后的代码如下:
def binary_for(li,val):
if val < li[0] or val > li[-1]:
return -1
left = 0
right = len(li) - 1
while left <= right:
mid = (left + right)//2
if li[mid] == val:
return mid
elif li[mid] < val:
left = mid + 1
else:
right = mid - 1
else:
return -1
这个实现在target超出范围时会立即返回-1,避免循环无法退出的问题。
望采纳!
【题目描述】 请输入一个字符串,再输入要删除的某个字符 ,大小写不用区分,将字符串中出现的指定字符全部删除。
【思路分析】
此题只需要使用python的内置函数将string中的响应元素替换成空字符即可达到删除的目的。
【注意】由于不区分大小写,则需要进行两次替换操作,一次替换要替换字符的大写形式;一次替换要删除字符的小写形式。
【实现代码】
# 3、请输入一个字符串,再输入要删除的某个字符 ,大小写不用区分,将字符串中出现的指定字符全部删除。
string = input("请输入一个字符串:")
wantremove = input("请输入要删除的值:")
print("删除前: " + string)
up = wantremove.upper() # 存储要删除值的大写
low = wantremove.lower() # 存储要删除值的小写
# 字符串处理,先把大写的符合条件替换删除,再把小写的替换删除
string = string.replace(up, "")
string = string.replace(low, "")
# 输出结果
print("删除后: " + string)
【实现结果】