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. 写出下面代码的输出结果:

    python 复制代码
    name = "Alice"
    age = 25
    print(f"{name} 明年 {age + 1} 岁")

    输出结果为:

    python 复制代码
    Alice 明年 26 岁
  2. 判断下面语句是否成立,并说明原因:

    python 复制代码
    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 分支:

    输出结果:

    python 复制代码
    	False

    💬 答案总结:

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

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

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

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

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

    ✅ 生成的数字:

    python 复制代码
    1, 3, 5, 7, 9

    因为:

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

    📌 输出验证代码:

    python 复制代码
    for i in range(1, 10, 2):
        print(i, end=" ")

    输出:

    python 复制代码
    1 3 5 7 9

程序设计题

  1. 打印九九乘法表(用嵌套循环)

    示例: 1x1=1 到 9x9=81

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

    ✅ 输出结果:

    python 复制代码
    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的成绩数量。

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

    ✅ 输出结果:

    python 复制代码
    大于80的成绩有 3 个

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

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

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

    ✅ 示例运行:

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

💡 实战项目复盘建议

你已经做出了一个简化版"学生管理系统",这是你本周的里程碑成果,建议你:

✅ 自己从0再写一次,不参考,锻炼记忆和思维。

✅ 尝试给系统增加功能(如:数据统计、分页查看等)。

✅ 如果你有兴趣,可以加一个简单的登录验证系统。

python 复制代码
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 True
        else:
            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")
        return

    page_size = 3
    total = 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_size
                end = start + page_size
                print(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()
                break
            else:
                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")
            return
    print("⚠️ 未找到该学生。\n")

# 统计信息
def statistics():
    if not students:
        print("⚠️ 暂无学生记录。\n")
        return
    total = len(students)
    avg = sum([s["score"] for s in students]) / total
    passed = 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():
        return

    while 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("👋 退出系统,再见!")
            break
        else:
            print("⚠️ 无效的选项,请重新输入。\n")

# 启动程序
if __name__ == "__main__":
    main()
相关推荐
wangwren31 分钟前
SpringAI--RAG知识库
java·rag·spring ai·pgvector
LaLaLa_OvO32 分钟前
修改SpringBootApplication类的入参后,引用外部yml的启动命令要修改
java
阿卡蒂奥33 分钟前
PaddleOCR本地部署 (Python+Flask)
开发语言·python·flask
cui_win34 分钟前
LangChain 和 LangChain-ChatChat 的区别
学习·ai·langchain
黎黎黎明⁠⁢34 分钟前
SpringBoot整合Sa-Token:实现RBAC权限模型
java·sa-token·springboot·idea
Java知识库35 分钟前
聊聊JVM怎么调优?(实战总结)
java·开发语言·jvm·程序员·编程
不穿铠甲的穿山甲1 小时前
Intellij IDEA 查找接口实现类的快捷键
java·ide·intellij-idea
CodingKnight1 小时前
IntelliJ IDEA Ultimate修改软件地区使用
java·ide·intellij-idea
hnlucky1 小时前
k8s中kubeSphere的安装使用+阿里云私有镜像仓库配置完整步骤
linux·运维·学习·阿里云·容器·kubernetes·云计算
小红的布丁1 小时前
单例模式的隐秘危机
java·开发语言