scores.txt 文件存放着某班学生的成绩,包含学号、平时成绩、期末成绩三列。请根据平时成绩占40%,期末成绩占 60%的比例计算总评成绩,写入另一个文件 scored.txt 中 scores.txt内容如下,学号 平时 期末001 65 75,002 80 85,003 75 80 scored.txt 内容如下:学号总评001 71,002 83,003 78
时间: 2024-03-16 11:46:34 浏览: 274
好的,我明白了你的问题。以下是我提供的 Python 代码,可以根据你提供的 scores.txt 文件计算总评成绩并写入 scored.txt 文件中:
```python
# 打开 scores.txt 文件
with open('scores.txt', 'r') as f:
lines = f.readlines()
# 遍历每一行,计算总评成绩并写入 scored.txt 文件
with open('scored.txt', 'w') as f:
for line in lines:
parts = line.strip().split() # 分割每一行的内容
id, p_score, e_score = parts[0], int(parts[1]), int(parts[2])
total_score = int(p_score * 0.4 + e_score * 0.6) # 计算总评成绩
f.write(f'{id} {total_score}\n') # 写入 scored.txt 文件
```
运行这段代码,程序将会自动读取 scores.txt 文件中的内容,计算每个学生的总评成绩,并将结果写入 scored.txt 文件中。注意,代码中的路径是相对路径,如果你的文件不在当前工作目录下,需要修改路径。
相关问题
python实现score.txt文件中存放着某班学生的计算机课成绩,包含学号、平时成绩、期末成绩三列。请根据平时成绩占40%,期末成绩占60%的比例计算总评成绩,并按学号、总评成绩两列写入另一个文件scored.txt中。同时在屏幕上输出学生总人数,按总评成绩计算90分以上、80~89分、70~79分、60~69分、60分以下各成绩区间的人数和班级总平均分(取两位小数)。
好的,这是一个稍微复杂一些的python编程问题。下面是代码:
```python
# 读取score.txt文件,并计算总评成绩
with open('score.txt', 'r') as f:
lines = f.readlines()
scores = []
for line in lines:
stu_id, daily_score, final_score = line.split()
total_score = int(daily_score) * 0.4 + int(final_score) * 0.6
scores.append((stu_id, total_score))
# 写入scored.txt文件,并输出各成绩区间人数和平均分
with open('scored.txt', 'w') as f:
f.write("学号\t总评成绩\n")
above_90, between_80_89, between_70_79, between_60_69, below_60 = 0, 0, 0, 0, 0
total_score = 0
for score in scores:
f.write(score[0] + '\t' + str(score[1]) + '\n')
if score[1] >= 90:
above_90 += 1
elif score[1] >= 80:
between_80_89 += 1
elif score[1] >= 70:
between_70_79 += 1
elif score[1] >= 60:
between_60_69 += 1
else:
below_60 += 1
total_score += score[1]
total_count = len(scores)
average_score = total_score / total_count
f.write("总人数:%d\n" % total_count)
f.write("90分以上:%d\n" % above_90)
f.write("80~89分:%d\n" % between_80_89)
f.write("70~79分:%d\n" % between_70_79)
f.write("60~69分:%d\n" % between_60_69)
f.write("60分以下:%d\n" % below_60)
f.write("平均分:%0.2f" % average_score)
print("总人数:", total_count)
print("90分以上:", above_90)
print("80~89分:", between_80_89)
print("70~79分:", between_70_79)
print("60~69分:", between_60_69)
print("60分以下:", below_60)
print("平均分:%.2f" % average_score)
```
程序首先读取score.txt文件,计算每个学生的总评成绩,并保存在一个列表中。然后,程序打开scored.txt文件,并依次写入每个学生的学号和总评成绩,同时统计各成绩区间人数和总平均分。最后,程序在屏幕上输出各成绩区间人数和平均分。
需要注意的是,写入文件时,我们使用了字符串格式化操作,用%d和%f分别代表整数和浮点数,%.2f表示保留两位小数。
用python编写7.当前目录下有一个文件名为score1.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占30%、期末成绩占70%的比例计算总评成绩(取整数),并分学号、总评成绩两列写入另一文件score2.txt中。同时,在屏幕上输出学生总人数,按总评成绩计90分以上、80~89分、70~79分、60~69分、60分以下各成绩挡的人数和班级总平均分(取整数)。
以下是代码实现:
```python
with open('score1.txt', 'r') as f1, open('score2.txt', 'w') as f2:
f2.write('学号\t总评成绩\n')
total_scores = []
num_above_90 = 0
num_80_89 = 0
num_70_79 = 0
num_60_69 = 0
num_below_60 = 0
num_students = 0
total_score = 0
for line in f1:
num_students += 1
student_info = line.split()
score = int(student_info[1]) * 0.3 + int(student_info[2]) * 0.7
total_scores.append(score)
total_score += score
if score >= 90:
num_above_90 += 1
elif score >= 80:
num_80_89 += 1
elif score >= 70:
num_70_79 += 1
elif score >= 60:
num_60_69 += 1
else:
num_below_60 += 1
f2.write(student_info[0] + '\t' + str(int(score)) + '\n')
avg_score = int(total_score / num_students)
print('总人数:', num_students)
print('90分以上的人数:', num_above_90)
print('80~89分的人数:', num_80_89)
print('70~79分的人数:', num_70_79)
print('60~69分的人数:', num_60_69)
print('60分以下的人数:', num_below_60)
print('班级总平均分:', avg_score)
```
代码说明:
首先我们用 with open 打开 score1.txt 文件,并指定读取模式('r'),然后用 with open 打开 score2.txt 文件,并指定写入模式('w')。在 score2.txt 文件中,我们首先写入表头:'学号\t总评成绩\n'。
接下来,我们创建一个空列表 total_scores,用来存放每个学生的总评成绩。同时,我们定义了 num_above_90、num_80_89、num_70_79、num_60_69 和 num_below_60 这五个变量,分别用来统计总评成绩在 90 分以上、80~89 分、70~79 分、60~69 分和 60 分以下的学生人数。我们还定义了 num_students 和 total_score 两个变量,分别用来统计学生总人数和班级总分数。
接下来,我们遍历 score1.txt 文件的每一行,将其按空格分割成一个列表 student_info。列表的第一个元素是学号,第二个元素是平时成绩,第三个元素是期末成绩。我们将平时成绩乘以 0.3,期末成绩乘以 0.7,然后将两者相加,得到总评成绩,并将其保存到 total_scores 列表中。我们也将总评成绩加到 total_score 中,以便计算班级总平均分。
根据总评成绩的大小,我们分别更新 num_above_90、num_80_89、num_70_79、num_60_69 和 num_below_60 这五个变量。同时,在 score2.txt 文件中写入学号和总评成绩,每个学生的信息占据一行。
最后,我们计算班级总平均分,并将 num_students、num_above_90、num_80_89、num_70_79、num_60_69、num_below_60 和 avg_score 分别输出到屏幕上。
阅读全文