python基础--文件作业

读入一个Python程序,将其单行的注释(即 每一行“#”后面的内容)删除后保存;

with open('05_with.py') as f, open('delete.txt', 'w+') as f1:
    for str in f:
        a = 0
        for i in str:
            if i == '#':
                a += 1
        if a == 0:
            f1.write(str)
        else:
            li = str.split('#')
        f1.write(li[0] + '#' + '\n')

随机生成100个学生的成绩保存在文件scores.txt文件中;
2). 从文件中读出学生的成绩,输出最高、最低,以及平均成绩(平均成绩为小数)。
3). 从文件中读出学生的成绩,统计90分以上学生的人数并输出。
4). 求出这次考试的平均成绩,并统计各分数段的人数(优秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。
5). 将统计结果保存到数据文件statictic.txt中

import random


def studentscores(filename):
    with open(filename, 'a+') as f:
        for i in range(100):
            f.write(str(random.randint(0, 100)) + '\n')


def max_min_avg_scores(filename):
    with open(filename, 'r+') as f:
        li=[int(i) for i in f.readlines()]
        max_score = max(li)
        min_score = min(li)
        avg_score = sum(li)/len(li)
    return max_score, min_score, avg_score


def scores(filename):
    with open(filename, 'r+') as f:
        li = [int(i) for i in f.readlines()]
        li1=[i for i in li if i>90]
    return len(li1), li1


def scores1(filename):
    score = dict()
    with open(filename, 'r+') as f:
        li=[int(i) for i in f.readlines()]
        count1,count2,count3,count4,count5=0,0,0,0,0
        for i in li:
            if i >= 90:
                count1 += 1
            elif i >= 80 and i < 90:
                count2 += 1
            elif i >= 70 and i < 80:
                count3 += 1
            elif i >= 60 and i < 70:
                count4 += 1
            else:
                count5 += 1
        score['优秀']=count1
        score['良好']=count2
        score['中等']=count3
        score['及格']=count4
        score['不及格']=count5
    return score


def main(filename1, filename2):
    a = studentscores(filename1)
    b = max_min_avg_scores(filename1)
    c = scores(filename1)
    d = scores1(filename1)
    with open(filename2, 'w+') as f:
        f.write(str(a)+'\n')
        f.write(str(b)+'\n')
        f.write(str(c)+'\n')
        f.write(str(d)+'\n')
        f.seek(0, 0)
        print(f.read())
main('socres.txt','statictic.txt')

运行结果
在这里插入图片描述

生成的文件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值