• python经典百题之分数评级


    题目:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

    方案一:使用if语句判断

    1. 使用Python内置的open()函数打开txt文件,使用read()方法读取文件中的内容,使用splitlines()方法分割每一行
    2. 遍历每一行,对每一个学生分数进行判断,根据分数划分为A、B、C三类,将评级结果拼接到每一行末尾
    3. 将评级后的内容使用write()方法写回txt文件

    优点:实现简单,易于理解

    缺点:代码可读性差,当判断条件多且复杂时,代码量会增加,难以维护

    1. with open('scores.txt', 'r') as f:
    2. lines = f.readlines() # 读取所有行
    3. with open('scores.txt', 'w') as f:
    4. for line in lines:
    5. score = int(line.strip()) # 去除换行符并转为整数
    6. if score >= 90:
    7. level = 'A'
    8. elif score >= 60:
    9. level = 'B'
    10. else:
    11. level = 'C'
    12. f.write('{} {}\n'.format(line.strip(), level)) # 写入原始分数和评级

    方案二:使用列表推导式和lambda函数

    1. 使用Python内置的open()函数打开txt文件,使用read()方法读取文件中的内容,使用splitlines()方法分割每一行
    2. 遍历每一行,使用列表推导式和lambda函数对每一个学生分数进行判断,根据分数划分为A、B、C三类,将评级结果拼接到每一行末尾
    3. 将评级后的内容使用write()方法写回txt文件

    优点:代码简洁,可读性高,适合进行一些简单的数据操作

    缺点:当判断条件复杂时,可读性会下降,不易维护

    1. # lambda函数用于将数值转换成对应的等级
    2. get_grade = lambda score: 'A' if score >= 90 else ('B' if score >= 60 else 'C')
    3. with open('scores.txt', 'r') as f:
    4. # 读取每一行并根据空格分割成列表
    5. scores = [line.strip().split() for line in f.readlines()]
    6. # 将每个学生的成绩转换成对应的等级,并将结果追加到列表中
    7. grades = [[*score, get_grade(int(score[-1]))] for score in scores]
    8. with open('grades.txt', 'w') as f:
    9. # 将每个学生的信息写入文件中
    10. for grade in grades:
    11. f.write(' '.join(grade) + '\n')

    方案三:使用pandas库进行数据处理

    1. 使用pandas库的read_csv()方法读取txt文件
    2. 使用apply()方法将对每一个学生分数进行判断,根据分数划分为A、B、C三类,将评级结果添加到一个新的列中
    3. 将处理后的数据使用to_csv()方法写回txt文件

    优点:pandas库具有强大的数据处理能力,可以快速高效地进行数据操作,代码可读性高

    缺点:对于简单的数据操作,使用pandas库有些过于复杂,且需要安装第三方库pandas

    1. import pandas as pd
    2. # 读取txt文件,假设文件中有两列,分别为name和score
    3. df = pd.read_table('data.txt', sep='\s+', header=None, names=['name', 'score'])
    4. # 定义评级函数
    5. def get_grade(score):
    6. if score >= 90:
    7. return 'A'
    8. elif score >= 60:
    9. return 'B'
    10. else:
    11. return 'C'
    12. # 添加评级列
    13. df['grade'] = df['score'].apply(get_grade)
    14. # 根据评级列进行排序
    15. df.sort_values(by=['grade'], ascending=False, inplace=True)
    16. # 将结果写入txt文件
    17. df.to_csv('result.txt', index=False, sep='\t', header=None)

  • 相关阅读:
    Java 网络编程 —— Socket 详解
    leetcode刷题——单链表
    【JQ _DOM】DOM
    深度学习——使用卷积神经网络改进识别鸟与飞机模型
    Flink基础概念入门
    vue.js毕业设计,基于vue.js前后端分离图书购物商城小程序系统 开题报告
    2023东华理工大学计算机考研信息汇总
    python socket 制作http服务器 (面向对象封装)
    数组的对象
    JAVA中三种I/O框架——BIO、NIO、AIO
  • 原文地址:https://blog.csdn.net/yechuanhui/article/details/132899984