写几个函数: 1) 输入10个职工的姓名和职工号; 2) 按职工号从小到大排序,姓名也相应改变顺序; 3) 要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
时间: 2024-05-13 22:13:39 浏览: 143
好的,这是一个比较实用的问题,我可以为你编写一下这些函数。下面是代码:
```python
def input_info():
# 输入职工姓名和职工号
info_list = []
for i in range(10):
name = input("请输入第{}个职工的姓名:".format(i+1))
id_num = input("请输入第{}个职工的职工号:".format(i+1))
info_list.append({'name':name, 'id_num':id_num})
return info_list
def sort_info(info_list):
# 按职工号从小到大排序,姓名也相应改变顺序
return sorted(info_list, key=lambda x:x['id_num'])
def binary_search(info_list, id_num):
# 折半法查找职工姓名
left, right = 0, len(info_list)-1
while left <= right:
mid = (left+right) // 2
if id_num == info_list[mid]['id_num']:
return info_list[mid]['name']
elif id_num > info_list[mid]['id_num']:
left = mid+1
else:
right = mid-1
return "未找到该职工信息!"
if __name__ == '__main__':
info = input_info()
sorted_info = sort_info(info)
print("排序后的职工信息为:")
for i in sorted_info:
print("姓名:{},职工号:{}".format(i['name'], i['id_num']))
id_num = input("请输入要查找的职工的职工号:")
name = binary_search(sorted_info, id_num)
print("该职工的名称为:", name)
```
希望我的答案能够满足您的需求。如果您还有什么问题,请随时问我。
阅读全文