自行创建文本文件score.txt,其中存储了如下所示若干学生的姓名、学号和3门考试课的成绩。编程将所有两门以上(含两门)课程不及格的学生信息输出到文件 fail.txt、其他学生信息输出到pass.txt。
张三,10086,66,77,88
李四,10087,87,87,78
王二,10088,65,47,88
麻子,10089,30,20,88
这样?
students=[]
with open('score.txt') as f:
students=f.readlines()
listfail=[]
listpass=[]
for i in range(len(students)):
fail=0
items=students[i].split(',')
if int(items[2])<60:
fail+=1
if int(items[3])<60:
fail+=1
if int(items[4])<60:
fail+=1
if fail>1:
listfail.append(students[i])
else:
listpass.append(students[i])
with open('fail.txt','w') as f:
f.writelines(listfail)
with open('pass.txt','w') as f:
f.writelines(listpass)
有帮助麻烦点下【采纳该答案】,谢谢~~
主要两个点,一个是文本的读写,一个是不及格人数的计算。
代码如下
# r 表示读数据
with open('1.txt','r') as f:
data_list = f.readlines()
for data in data_list:
achievement = data.replace('\n','').split(',')[-3:]
print(achievement)
count = sum(1 for x in achievement if float(x) < 60)
if count >= 2:
# a 表示附加写
with open('fail.txt','a+') as fail_f:
fail_f.write(data)
else:
with open('pass.txt','a+') as pass_f:
pass_f.write(data)
有用请采纳(score.txt和这个python文件同目录下)
with open("score2.txt", 'r', encoding='utf-8') as f:
contents = [each.strip().split(",") for each in f.readlines()]
failStudent = []
passStudent = []
for each in contents:
count = 0
for i in range(2, 5):
if int(each[i]) < 60:
count += 1
if count >= 2:
failStudent.append(each)
else:
passStudent.append(each)
with open("fail.txt", "w") as f:
for each in failStudent:
f.write(','.join(each))
f.write('\n')
with open("pass.txt", "w") as f:
for each in passStudent:
f.write(','.join(each))
f.write('\n')
你好哦,如有帮助,请点击下方评论采纳按钮。
# -*- coding: utf-8 -*-
import pandas as pd
data=pd.read_csv('score.txt',sep=',',header=None)
data.columns = ['姓名', '学号', '成绩1','成绩2','成绩3']
print(data)
def score_count(x,y,z):
sum=0
if x<60:
sum=sum+1
if y<60:
sum = sum + 1
if z<60:
sum = sum + 1
return sum
data['count']=data.apply(lambda r: score_count(r['成绩1'],r['成绩2'],r['成绩3']),axis=1)
print(data)
# 将所有两门以上(含两门)课程不及格的学生信息输出到文件 fail.txt
data_fail=data[data['count']>=2]
print(data_fail)
data_fail.to_csv('fail.txt',sep='\t',index=False)
# 其他学生信息输出到pass.txt。
data_pass=data[data['count']<2]
print(data_pass)
data_pass.to_csv('pass.txt',sep='\t',index=False)
运行结果:
姓名 学号 成绩1 成绩2 成绩3
0 张三 10086 66 77 88
1 李四 10087 87 87 78
2 王二 10088 65 47 88
3 麻子 10089 30 20 88
姓名 学号 成绩1 成绩2 成绩3 count
0 张三 10086 66 77 88 0
1 李四 10087 87 87 78 0
2 王二 10088 65 47 88 1
3 麻子 10089 30 20 88 2
姓名 学号 成绩1 成绩2 成绩3 count
3 麻子 10089 30 20 88 2
姓名 学号 成绩1 成绩2 成绩3 count
0 张三 10086 66 77 88 0
1 李四 10087 87 87 78 0
2 王二 10088 65 47 88 1
```python