写几个函数:(1)输入10个职工的姓名和职工号;(2)按职工号从小到大排序,姓名也相应改变顺序;(3)要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
时间: 2023-05-03 10:00:28 浏览: 121
这个问题要求我们书写几个函数:
1) 输入10个职工的姓名和职工号;
2) 按职工号从小到大排序,姓名也相应改变顺序;
3) 要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
相关问题
写几个函数: 1) 输入10个职工的姓名和职工号; 2) 按职工号从小到大排序,姓名也相应改变顺序; 3) 要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
好的,这是一个比较实用的问题,我可以为你编写一下这些函数。下面是代码:
```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)
```
希望我的答案能够满足您的需求。如果您还有什么问题,请随时问我。
这个问题要求我们书写几个函数: 1) 输入10个职工的姓名和职工号; 2) 按职工号从小到大排序,姓名也相应改变顺序; 3) 要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
好的,下面是代码实现:
```python
# 定义职工类
class Employee:
def __init__(self, name, id):
self.name = name
self.id = id
# 输入10个职工的姓名和职工号
def input_employee():
employees = []
for i in range(10):
name = input("请输入第{}个职工的姓名:".format(i+1))
id = int(input("请输入第{}个职工的职工号:".format(i+1)))
employee = Employee(name, id)
employees.append(employee)
return employees
# 按职工号从小到大排序,姓名也相应改变顺序
def sort_employee(employees):
employees.sort(key=lambda x:x.id)
# 折半查找职工姓名
def find_employee_name(employees, id):
left = 0
right = len(employees) - 1
while left <= right:
mid = (left + right) // 2
if employees[mid].id == id:
return employees[mid].name
elif employees[mid].id < id:
left = mid + 1
else:
right = mid - 1
return None
# 测试
if __name__ == '__main__':
employees = input_employee()
sort_employee(employees)
id = int(input("请输入要查找的职工的职工号:"))
name = find_employee_name(employees, id)
if name:
print("职工号为{}的职工姓名为{}".format(id, name))
else:
print("找不到职工号为{}的职工".format(id))
```
注意:在输入职工号时,要将输入的字符串转换为整数类型,否则会导致折半查找时无法比较大小。
阅读全文