用python编写程序实现:已知有列表 Num = [-3, 0, 2, 5, 6, 8, 37, 45, 61, 67, 75, 78, 84, 86, 93, 97] 请用python编写一个函数Fun(Num,m),该函数能够利用折半法查找m(m由用户输入)在Num中的位置,如果找到则返回m的位置,如果无法找到则提示“m不在列表Num中”。 提示:折半查找的基本算法是:每次查找前先确定列表中待查的 范围low和high(low<high),然后用m与中间位置(mid)上 元素的值进行比较。如果m的值大于中间位置元素的值, 则下一次的查找范围落在中间位置之后的元素中;反之, 下一次的查找范围落在中间位置之前的元素中。 直到low>high,查找结束
时间: 2024-03-03 18:51:49 浏览: 124
py代码-列表ls=[1,2,3,4,5,6,7,8,9],编程去除ls中的素数,并输出结果列表
好的,以下是符合要求的Python代码:
```python
def Fun(Num, m):
low = 0
high = len(Num) - 1
while low <= high:
mid = (low + high) // 2
if Num[mid] == m:
return mid
elif Num[mid] < m:
low = mid + 1
else:
high = mid - 1
return "m不在列表Num中"
Num = [-3, 0, 2, 5, 6, 8, 37, 45, 61, 67, 75, 78, 84, 86, 93, 97]
m = int(input("请输入要查找的数:"))
print(Fun(Num, m))
```
运行结果示例:
```
请输入要查找的数:75
10
```
在这个程序中,我们定义了一个函数 `Fun`,该函数接受两个参数 `Num` 和 `m`,其中 `Num` 是待查找的列表,`m` 是要查找的数。函数中使用了折半查找的算法,每次将待查找的范围缩小一半,直到找到 `m` 或者待查找的范围为空。如果找到了 `m`,则返回它在列表中的位置;如果没有找到,则返回提示信息。
在主程序中,我们先定义了一个列表 `Num` 和一个要查找的数 `m`,然后调用 `Fun` 函数进行查找,并将结果打印出来。注意,由于 `input()` 函数返回的是字符串类型,所以需要使用 `int()` 函数将其转换为整数类型。
阅读全文