导航菜单

  • 1.VSCode开发
  • 2.什么是Python?
  • 3.请详细解释Python代码的执行过程
  • 4.请详细解释解释型语言与编译型语言的主要区别
  • 5.你知道哪些Python的编码规范?
  • 6.数据类型
  • 7.Python中如何声明多个变量并赋值
  • 8.Python有哪些内置数据结构
  • 9.!=和is not运算符有什么区别?
  • 10.进制
  • 11.编码
  • 12.print
  • 13.Python中break、continue、pass有什么作用?
  • 14.namedtuple有什么作用?
  • 15.Python的range函数如何运用?
  • 16.Python中join()和split()函数有什么区别?
  • 17.Python中如何将字符串转换为小写?
  • 18.Python中如何删除字符串中的前置空格?
  • 19.Python中如何使用索引反转字符串
  • 20.什么是Python的成员运算符?
  • 21.请详细说明Python中逻辑运算符(`and`、`or`、`not`)
  • 22.什么是Python的关系运算符?
  • 23.什么是Python的赋值和算术运算符?请详细说明赋值运算符、算术运算符的种类、使用方法、优先级规则。
  • 24.请详细解释Python中整数除法、取模运算和幂运算三个运算符。
  • 25.如何在Python中表示和转换不同进制的数字
  • 26.什么是Python的位运算符?
  • 27.请详细说明Python中三元表达式(Ternary Expression)的工作原理
  • 28.Python中如何实现switch语句?
  • 29.什么是Python的负索引?
  • 30.Python中如何实现字符串替换操作?
  • 31.Python中append、insert和extend有什么区别?
  • 32.请详细说明Python中`enumerate()`函数的作用
  • 33.Python中remove、del和pop有什么区别?
  • 34.Python中如何更改列表元素的数据类型?
  • 35.请详细说明Python中列表(list)和元组(tuple)的区别
  • 36.什么是Python元组的解封装?
  • 37.详细说明Python字典
  • 38.Python中KeyError、TypeError和ValueError有什么区别?
  • 39.请详细解释Python中`read()`、`readline()`和`readlines()`三种文件读取方法
  • 40.Python中iterable、iterator和generator的区别与联系
  • 41.Python中如何读取大文件?
  • 42.请详细解释Python中浅拷贝(shallow copy)和深拷贝(deep copy)的区别
  • 43.什么是Python的Lambda函数?
  • 44.Python中的reduce函数有什么作用?
  • 45.Python的zip函数有什么作用?
  • 46.请详细解释Python中`any()`和`all()`内置函数的作用
  • 47.为什么Python中没有函数重载?
  • 48.请介绍Python中变量的作用域(Scope)?
  • 49.什么是Python的闭包
  • 50.请详细说明Python中的内存管理机制
  • 51.请详细说明Python程序退出时内存的释放情况
  • 52.Python中是否有严格意义上的main函数?
  • 53.什么是Python的pickling和unpickling?
  • 54.什么是Python的猴子补丁(monkey patching)?
  • 55.什么是Python的鸭子类型(Duck Typing)
  • 56.什么是Python中的面向对象编程
  • 57.Python是否支持多重继承
  • 58.请详细说明Python3中装饰器的用法
  • 59.什么是Python中的模块和包?
  • 60.你使用过哪些Python标准库模块?
  • 61.你知道哪些Python魔术方法
  • 62.讲一下Python多线程、多进程和线程池
  • 63.如何分析Python代码的执行性能?
  • 64.pip
  • 65.pip-m
  • 67.uv
  • utf8
  • ast
  • dis
  • 尾递归
  • MethodType
  • 1. print题目
    • 1.1 标题
    • 1.2. 题目内容
    • 1.3 测试数据
    • 1.4. 预期输出效果
  • 2.参考答案
    • 2.1 代码
    • 2.2 知识点覆盖

1. print题目 #

1.1 标题 #

假设你正在开发一个学生成绩管理系统,需要实现一个成绩报告生成功能。系统需要将学生数据以美观的格式输出到控制台,同时支持将报告保存到文件。

1.2. 题目内容 #

请完成以下功能:

  1. 学生数据格式化输出:

    • 创建一个学生类,包含姓名、年龄、各科成绩(语文、数学、英语)
    • 实现 __str__ 方法,使 print(student) 输出格式为:学生:张三,年龄:20,平均分:85.67
  2. 班级成绩表格输出:

    • 设计一个函数,将学生列表以表格形式输出
    • 表格包含:姓名、年龄、语文、数学、英语、平均分、等级
    • 要求:姓名左对齐宽度10,分数右对齐保留1位小数,等级根据平均分自动计算(≥90为A,≥80为B,≥70为C,其他为D)
  3. 进度显示功能:

    • 实现一个模拟数据加载进度条,显示"正在加载学生数据..."并伴随动态进度条
    • 进度条格式:[#######] 100% 加载完成
  4. 日志输出功能:

    • 创建一个带颜色的日志输出函数
    • 支持不同级别:INFO(绿色)、WARNING(黄色)、ERROR(红色)
    • 格式:[级别] 时间戳: 消息内容
  5. 数据导出功能:

    • 将学生数据导出为CSV格式文件
    • 使用 print() 的 file 参数实现

1.3 测试数据 #

students_data = [
    ("张三", 20, 85, 92, 78),
    ("李四", 19, 76, 88, 94),
    ("王五", 21, 95, 87, 82),
    ("赵六", 20, 68, 75, 71),
    ("钱七", 22, 91, 96, 89)
]

1.4. 预期输出效果 #

[INFO] 14:30:15: 开始加载学生数据
[#######] 100% 加载完成

班级成绩报告
==========================================
姓名       年龄   语文   数学   英语   平均分   等级
张三       20     85.0   92.0   78.0   85.0     B
李四       19     76.0   88.0   94.0   86.0     B
王五       21     95.0   87.0   82.0   88.0     B
赵六       20     68.0   75.0   71.0   71.3     C
钱七       22     91.0   96.0   89.0   92.0     A

[INFO] 14:30:16: 成绩报告生成完成
[INFO] 14:30:16: 数据已导出到 students.csv

2.参考答案 #

2.1 代码 #

# 导入time模块,用于处理时间相关功能
import time
# 导入csv模块,用于读写CSV文件
import csv
# 从datetime模块导入datetime类,用于生成时间戳
from datetime import datetime

# 定义ANSI颜色代码类,用来在终端输出带颜色的文字
class Colors:
    # 绿色
    GREEN = '\033[92m'
    # 黄色
    YELLOW = '\033[93m'
    # 红色
    RED = '\033[91m'
    # 重置颜色
    RESET = '\033[0m'

# 定义学生类
class Student:
    # 初始化方法,传入姓名、年龄、语文、数学和英语分数
    def __init__(self, name, age, chinese, math, english):
        # 保存学生姓名
        self.name = name
        # 保存学生年龄
        self.age = age
        # 保存语文成绩
        self.chinese = chinese
        # 保存数学成绩
        self.math = math
        # 保存英语成绩
        self.english = english
        # 计算平均分
        self.average = (chinese + math + english) / 3

    # 定义对象的字符串表示,用于打印学生信息
    def __str__(self):
        # 返回格式化的学生信息字符串
        return f"学生:{self.name},年龄:{self.age},平均分:{self.average:.2f}"

    # 获取学生成绩等级的方法
    def get_grade(self):
        # 如果平均分大于等于90,返回A
        if self.average >= 90:
            return 'A'
        # 如果平均分大于等于80,返回B
        elif self.average >= 80:
            return 'B'
        # 如果平均分大于等于70,返回C
        elif self.average >= 70:
            return 'C'
        # 否则返回D
        else:
            return 'D'

# 带颜色的日志输出函数
def colored_log(message, level="INFO"):
    # 定义不同日志级别的颜色
    colors = {
        "INFO": Colors.GREEN,
        "WARNING": Colors.YELLOW,
        "ERROR": Colors.RED
    }
    # 获取对应级别的颜色代码,找不到则用重置色
    color = colors.get(level, Colors.RESET)
    # 获取当前时间并格式化为时:分:秒
    timestamp = datetime.now().strftime("%H:%M:%S")
    # 打印带颜色、时间戳和信息级别的日志信息
    print(f"{color}[{level}] {timestamp}: {message}{Colors.RESET}")

# 显示加载进度条的函数
def show_progress():
    # 日志提示开始加载学生数据
    colored_log("开始加载学生数据", "INFO")
    # 进度条循环,0~10,总共11步
    for i in range(11):
        # 计算当前进度百分比
        progress = i * 10
        # 构造进度条字符串
        bar = '#' * i + ' ' * (10 - i)
        # 输出进度条及百分比,\r用于在同一行刷新
        print(f"\r[{bar}] {progress}%", end="", flush=True)
        # 每次等待0.1秒,模拟加载过程
        time.sleep(0.1)
    # 进度条加载完成提示
    print(" 加载完成")

# 打印学生成绩表格的函数
def print_student_table(students):
    # 打印标题
    print("\n班级成绩报告")
    # 打印分隔线
    print("=" * 42)

    # 打印表头
    print(f"{'姓名':<10} {'年龄':<6} {'语文':<6} {'数学':<6} {'英语':<6} {'平均分':<8} {'等级':<4}")

    # 遍历学生列表,逐行打印每个学生的数据
    for student in students:
        print(f"{student.name:<10} {student.age:<6} {student.chinese:<6.1f} "
              f"{student.math:<6.1f} {student.english:<6.1f} "
              f"{student.average:<8.1f} {student.get_grade():<4}")

# 导出学生数据到CSV文件的函数
def export_to_csv(students, filename="students.csv"):
    # 以写入模式打开CSV文件,编码为utf-8
    with open(filename, "w", newline="", encoding="utf-8") as f:
        # 创建CSV写入器
        writer = csv.writer(f)

        # 写入表头
        writer.writerow(["姓名", "年龄", "语文", "数学", "英语", "平均分", "等级"])

        # 遍历学生列表,写入每个学生的数据
        for student in students:
            writer.writerow([
                student.name, student.age, student.chinese, 
                student.math, student.english, 
                f"{student.average:.1f}", student.get_grade()
            ])

    # 日志输出数据导出成功
    colored_log(f"数据已导出到 {filename}", "INFO")

# 主函数入口
def main():
    # 主函数说明文档字符串
    """主函数"""
    # 准备测试数据,每个元素是一个学生的信息
    students_data = [
        ("张三", 20, 85, 92, 78),
        ("李四", 19, 76, 88, 94),
        ("王五", 21, 95, 87, 82),
        ("赵六", 20, 68, 75, 71),
        ("钱七", 22, 91, 96, 89)
    ]

    # 创建学生对象列表
    students = [Student(*data) for data in students_data]

    # 显示加载进度条
    show_progress()

    # 打印第一个学生的信息,用于测试__str__方法
    print(f"\n第一个学生信息: {students[0]}")

    # 打印所有学生的成绩表格
    print_student_table(students)

    # 日志输出报告生成完成
    colored_log("成绩报告生成完成", "INFO")

    # 导出学生数据到csv文件
    export_to_csv(students)

# 判断是否为主程序
if __name__ == "__main__":
    # 调用主函数
    main()

2.2 知识点覆盖 #

  1. 面向对象编程:类的定义、__str__方法
  2. 字符串格式化:f-string、对齐、精度控制
  3. print参数应用:end、file参数的使用
  4. 进度显示:\r转义符、动态更新
  5. 颜色输出:ANSI转义序列
  6. 文件操作:CSV文件写入
  7. 时间处理:时间戳格式化
  8. 循环和条件:等级计算逻辑
  9. 函数设计:模块化编程思想

访问验证

请输入访问令牌

Token不正确,请重新输入