文件score.txt保存了学生的平时成绩和期末成绩,内容如下: 学号,平时成绩,期末成绩 9999180101,77,88 9999180102,91,85 9999180103,87,96 9999180104,70,68 9999180105,86,72 编写程序读取所有成绩,计算总评成绩(四舍五入到整数),其中总评成绩=平时成绩40%+期末成绩60%。最后按总评成绩降序排列后保存至一个新的文件内,文件内容应该如下:
时间: 2024-01-09 07:05:47 浏览: 124
首先,我们需要读取文件并计算每个学生的总评成绩。代码如下:
```python
with open('score.txt', 'r') as f:
lines = f.readlines()
scores = []
for line in lines:
stu_info = line.strip().split(',')
stu_id = stu_info[0]
daily_score = int(stu_info[1])
final_score = int(stu_info[2])
total_score = round(daily_score * 0.4 + final_score * 0.6)
scores.append((stu_id, total_score))
```
上述代码中,我们使用了`with open()`语句来打开文件并读取每一行。然后,我们使用`strip()`方法去除每行字符串的空格和换行符,并使用`split()`方法将每行字符串按照逗号分隔为学号、平时成绩和期末成绩。接着,我们将平时成绩和期末成绩转换为整型,并计算每个学生的总评成绩。最后,我们将每个学生的学号和总评成绩保存到一个元组中,并将所有元组保存到一个列表`scores`中。
接下来,我们需要按照总评成绩降序排列,并将结果保存到新的文件内。代码如下:
```python
scores_sorted = sorted(scores, key=lambda x: x[1], reverse=True)
with open('result.txt', 'w') as f:
for score in scores_sorted:
f.write(score[0] + ',' + str(score[1]) + '\n')
```
上述代码中,我们使用`sorted()`函数对`scores`列表进行排序,排序规则是按照元素的第二个值即总评成绩进行降序排列。排序后的结果保存在`scores_sorted`列表中。接着,我们使用`with open()`语句打开新文件`result.txt`并将排序后的结果写入到文件中,每个元素占一行。在写入时,我们使用逗号将学号和总评成绩连接起来,并在最后加上一个换行符`\n`。
完整代码如下:
```python
with open('score.txt', 'r') as f:
lines = f.readlines()
scores = []
for line in lines:
stu_info = line.strip().split(',')
stu_id = stu_info[0]
daily_score = int(stu_info[1])
final_score = int(stu_info[2])
total_score = round(daily_score * 0.4 + final_score * 0.6)
scores.append((stu_id, total_score))
scores_sorted = sorted(scores, key=lambda x: x[1], reverse=True)
with open('result.txt', 'w') as f:
for score in scores_sorted:
f.write(score[0] + ',' + str(score[1]) + '\n')
```
执行完上述代码后,会在当前目录下生成一个新的文件`result.txt`,其中包含按总评成绩降序排列后的学生信息。
阅读全文