python编程练习题

自行创建文本文件score.txt,其中存储了如下所示若干学生的姓名、学号和3门考试课的成绩。编程将所有两门以上(含两门)课程不及格的学生信息输出到文件 fail.txt、其他学生信息输出到pass.txt。

    张三,10086,66,77,88
    李四,10087,87,87,78
    王二,10088,65,47,88
    麻子,10089,30,20,88

这样?

img


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)

img

有用请采纳(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