当前位置: 首页 > ops >正文

6个月Python学习计划 Day 7 - 复盘 + 测试日

第一周

Day 1 - Python 基础入门 & 开发环境搭建
Day 2 - 条件判断、用户输入、格式化输出
Day 3 - 循环语句 + range 函数
Day 4 - 列表 & 元组基础
Day 5 - 字典(dict)与集合(set)
Day 6 - 综合实战:学生信息管理系统

🧾 一周知识回顾(Week 1)

模块内容关键词
Python 入门变量、数据类型、输入输出str, int, float, bool, input(), print()
控制结构分支语句 if-elif-else,比较运算符==, !=, <, >, and, or, not
循环结构for,while,range(),嵌套循环循环变量、break、continue
列表增删查改、遍历、内置函数append(), remove(), sort(), in
综合项目学生信息管理系统字典列表、函数封装、菜单逻辑、保存数据

🧠 自我测试题

✅ 基础题

  1. 写出下面代码的输出结果:

    name = "Alice"
    age = 25
    print(f"{name} 明年 {age + 1} 岁")
    

    输出结果为:

    Alice 明年 26
  2. 判断下面语句是否成立,并说明原因:

    a = 10
    b = 20
    if a > 5 and b < 15:print("True")
    else:print("False")
    

    🔍 条件分析:

    • a > 5
      • a = 10
      • 判断:10 > 5 → ✅ True
    • b < 15
      • b = 20
      • 判断:20 < 15 → ❌ False

    🧠 and 运算符规则:

     - and 要求 两个条件都为 True,整个判断才是 True。- 只要其中一个为 False,结果就是 False。
    

    ✅ 结论:

     - a > 5 and b < 15 的结果是 True and False → False- 所以执行的是 else 分支:
    

    输出结果:

    	False
    

    💬 答案总结:

    该语句不成立,因为 b < 15 是 False。and 运算符要求两个条件都为 True 才整体为 True,因此 else 分支被执行,打印输出 False。

  3. 编写一个程序,输入一个整数,如果大于等于60则输出“及格”,否则输出“不及格”。

    # 获取用户输入
    score = int(input("请输入成绩(整数):"))# 判断成绩是否及格
    if score >= 60:print("及格")
    else:print("不及格")
    
  4. range(1, 10, 2) 生成了哪些数字?

    range(1, 10, 2) 表示从 1 开始,到 小于 10 的数字,每次增加 2,构成一个序列。

    range(start, stop, step)
    
    • start=1:起始值(包含)
    • stop=10:终止值(不包含)
    • step=2:步长,每次加 2

    ✅ 生成的数字:

    1, 3, 5, 7, 9
    

    因为:

     - 1 是起始- 加 2 → 3 ✅- 加 2 → 5 ✅- 加 2 → 7 ✅- 加 2 → 9 ✅- 再加 2 → 11 ❌(超过 stop=10,终止)
    

    📌 输出验证代码:

    for i in range(1, 10, 2):print(i, end=" ")
    

    输出:

    1 3 5 7 9
    

程序设计题

  1. 打印九九乘法表(用嵌套循环)
    示例: 1x1=1 到 9x9=81

    # 九九乘法表
    for i in range(1, 10):  # 外层循环控制行(1~9)for j in range(1, i + 1):  # 内层循环控制列,j <= iprint(f"{j}x{i}={j*i}", end="\t")  # 使用制表符对齐输出print()  # 每一行结束后换行
    

    ✅ 输出结果:

    1x1=1
    1x2=2   2x2=4
    1x3=3   2x3=6   3x3=9
    1x4=4   2x4=8   3x4=12  4x4=16
    1x5=5   2x5=10  3x5=15  4x5=20  5x5=25
    1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
    1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
    1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64
    1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81
    
  2. 写一个程序统计列表 [90, 87, 76, 65, 88] 中大于80的成绩数量。

    # 成绩列表
    scores = [90, 87, 76, 65, 88]# 计数器
    count = 0# 遍历列表
    for score in scores:if score > 80:count += 1# 输出结果
    print(f"大于80的成绩有 {count} 个")
    

    ✅ 输出结果:

    大于80的成绩有 3

    💡 补充技巧:使用列表推导式也可以实现同样的功能:

    scores = [90, 87, 76, 65, 88]
    count = len([s for s in scores if s > 80])
    print(f"大于80的成绩有 {count} 个")
    
  3. 编写一个循环,要求用户输入学生姓名,直到输入”q”为止,并将所有学生姓名存储在列表中。

    # 创建一个空列表用于存储学生姓名
    students = []print("请输入学生姓名(输入 'q' 退出):")while True:name = input("学生姓名:")if name.lower() == 'q':break  # 如果输入的是 q(不区分大小写),退出循环students.append(name)# 输出所有学生姓名
    print("\n录入的学生姓名如下:")
    for student in students:print(student)
    

    ✅ 示例运行:

    请输入学生姓名(输入 'q' 退出):
    学生姓名:张三
    学生姓名:李四
    学生姓名:王五
    学生姓名:q录入的学生姓名如下:
    张三
    李四
    王五
    

💡 实战项目复盘建议

你已经做出了一个简化版“学生管理系统”,这是你本周的里程碑成果,建议你:
✅ 自己从0再写一次,不参考,锻炼记忆和思维。
✅ 尝试给系统增加功能(如:数据统计、分页查看等)。
✅ 如果你有兴趣,可以加一个简单的登录验证系统。

import math# 登录验证信息
USERNAME = "admin"
PASSWORD = "123456"# 学生列表
students = []# 登录验证函数
def login():print("=== 学生管理系统登录 ===")for _ in range(3):username = input("用户名:")password = input("密码:")if username == USERNAME and password == PASSWORD:print("✅ 登录成功!\n")return Trueelse:print("❌ 用户名或密码错误,请重试。\n")print("⚠️ 登录失败,程序退出。")return False# 添加学生
def add_student():name = input("请输入姓名:")age = int(input("请输入年龄:"))gender = input("请输入性别(男/女):")score = float(input("请输入成绩:"))students.append({"name": name, "age": age, "gender": gender, "score": score})print("✅ 学生添加成功。\n")# 查看学生(分页)
def view_students():if not students:print("⚠️ 暂无学生记录。\n")returnpage_size = 3total = len(students)pages = math.ceil(total / page_size)while True:try:page = int(input(f"请输入要查看的页码(1~{pages}):"))if 1 <= page <= pages:start = (page - 1) * page_sizeend = start + page_sizeprint(f"\n📄 第 {page} 页(共 {pages} 页):")for i, stu in enumerate(students[start:end], start=1):print(f"{start+i}. 姓名:{stu['name']} | 年龄:{stu['age']} | 性别:{stu['gender']} | 成绩:{stu['score']}")print()breakelse:print("⚠️ 页码输入错误!")except ValueError:print("⚠️ 请输入数字页码!")# 查询学生
def search_student():keyword = input("请输入要查询的学生姓名关键词:")found = [stu for stu in students if keyword in stu["name"]]if found:print("\n🔍 查询结果:")for stu in found:print(f"姓名:{stu['name']} | 年龄:{stu['age']} | 性别:{stu['gender']} | 成绩:{stu['score']}")else:print("⚠️ 未找到相关学生。\n")# 删除学生
def delete_student():name = input("请输入要删除的学生姓名:")for stu in students:if stu["name"] == name:students.remove(stu)print("✅ 学生删除成功。\n")returnprint("⚠️ 未找到该学生。\n")# 统计信息
def statistics():if not students:print("⚠️ 暂无学生记录。\n")returntotal = len(students)avg = sum([s["score"] for s in students]) / totalpassed = len([s for s in students if s["score"] >= 60])print(f"\n📊 当前共 {total} 名学生")print(f"🎯 平均成绩:{avg:.2f}")print(f"✅ 及格人数:{passed},及格率:{(passed/total)*100:.1f}%\n")# 主程序
def main():if not login():returnwhile True:print("==== 学生信息管理系统 ====")print("1. 添加学生")print("2. 查看所有学生(分页)")print("3. 查询学生")print("4. 删除学生")print("5. 统计信息")print("6. 退出系统")choice = input("请输入操作编号(1-6):")if choice == '1':add_student()elif choice == '2':view_students()elif choice == '3':search_student()elif choice == '4':delete_student()elif choice == '5':statistics()elif choice == '6':print("👋 退出系统,再见!")breakelse:print("⚠️ 无效的选项,请重新输入。\n")# 启动程序
if __name__ == "__main__":main()
http://www.xdnf.cn/news/9349.html

相关文章:

  • 压缩包方式在Linux和Windows下安装mongodb
  • zynq7020 shm共享内存和OCM
  • Rust 和 Python 如何混合使用
  • 面试题——计算机网络:HTTP和HTTPS的区别?
  • MySQL问题:MVCC是什么?
  • 从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
  • java 递归地复制文件夹及其所有子文件夹和文件
  • LeetCode-栈-每日温度
  • 《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡
  • 界面控件DevExpress WinForms v24.2新版亮点:富文本编辑器功能全新升级
  • Java五种方法批量处理List元素全解
  • 【操作系统】内核态、用户态
  • [Python] 避免 PyPDF2 写入 PDF 出现黑框问题:基于语言自动匹配系统字体的解决方案
  • CS144 - LAB0
  • 文本编辑器vi的使用
  • SECS/GEM协议中Report ID、SV ID、CE ID与S2F33/S2F35/S2F37指令的关系及配置示例
  • 专业库室联管联控系统|门禁联管联控系统
  • Browser-use快速了解
  • 流光溢彩的数字长河:Linux基础IO,文件系统的诗意漫游
  • Google Play的最新安全变更可能会让一些高级用户无法使用App
  • 函数抓取图片microsoft excel与wps的区别
  • 【n-grams】基于统计方法的语言模型
  • 深入理解设计模式之中介者模式
  • 基于Springboot + vue3实现的图书管理系统
  • 【Mysql开启慢查询日志】
  • 泰迪杯特等奖案例深度解析:基于联邦时空图卷积网络的跨区域碳排放协同预测与优化系统
  • 详解Kubernetes Scheduler 的调度策略
  • Day04
  • python进程间通信
  • C++数据结构 : map和set的使用