使用Python代码完成全国大学生创新训练项目经费使用情况保存funds.txt文件中,部分内容如下: 学院,负责人姓名,获得经费(元),使用经费(元) 工商,张珊,5000,4680 工商,李思,6000,5900 会计,王武,8000,4000 经济,赵柳,10000,7800 经济,孙琪,5000,4100 请编写程序,从文件中读取信息,并实现以下功能: 计算并打印输出每一个负责人姓名和应退还经费(获得经费-使用经费); 统计各学院应退还多少经费,并按应退还经费从大到小的顺序打印输出各学院名称及其应退还经费。要求:使用open打开文件来完成
时间: 2023-09-10 20:12:55 浏览: 84
大学生创新创业训练项目经费报销明细表.pdf
好的,以下是Python代码实现:
```python
# 打开文件
with open('funds.txt', 'r') as f:
lines = f.readlines()
# 定义字典存储每个负责人的经费情况
person_funds = {}
# 定义字典存储每个学院的经费情况
college_funds = {}
# 遍历文件中的每一行数据
for line in lines[1:]:
# 去掉每行末尾的换行符
line = line.strip()
# 将一行数据按逗号分割
data = line.split(',')
# 获取负责人姓名、获得经费和使用经费
name, get_funds, used_funds = data[1], int(data[2]), int(data[3])
# 计算应退还经费
refund_funds = get_funds - used_funds
# 将负责人姓名和应退还经费存入字典
person_funds[name] = refund_funds
# 获取学院名称
college = data[0]
# 如果学院名称已经在字典中,累加经费情况
if college in college_funds:
college_funds[college] += refund_funds
# 如果学院名称不在字典中,添加新的经费情况
else:
college_funds[college] = refund_funds
# 打印每个负责人的应退还经费
print('每个负责人的应退还经费:')
for name, refund_funds in person_funds.items():
print('{}: {}元'.format(name, refund_funds))
# 按应退还经费从大到小排序
sorted_colleges = sorted(college_funds.items(), key=lambda x: x[1], reverse=True)
# 打印各学院应退还经费
print('各学院应退还经费:')
for college, refund_funds in sorted_colleges:
print('{}: {}元'.format(college, refund_funds))
```
代码中,使用`with open()`语句打开文件,然后使用`readlines()`方法读取所有行数据,存储在`lines`列表中。接着遍历`lines`中除第一行外的每一行数据,使用`split()`方法按逗号分割数据,将负责人姓名和应退还经费存入`person_funds`字典,将学院名称和应退还经费存入`college_funds`字典,并对每个学院的经费情况进行累加。最后按应退还经费从大到小排序,并打印出每个负责人的应退还经费和各学院应退还经费。
阅读全文