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 |
综合项目 | 学生信息管理系统 | 字典列表、函数封装、菜单逻辑、保存数据 |
🧠 自我测试题
✅ 基础题
-
写出下面代码的输出结果:
name = "Alice" age = 25 print(f"{name} 明年 {age + 1} 岁")
输出结果为:
Alice 明年 26 岁
-
判断下面语句是否成立,并说明原因:
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。
- a > 5
-
编写一个程序,输入一个整数,如果大于等于60则输出“及格”,否则输出“不及格”。
# 获取用户输入 score = int(input("请输入成绩(整数):"))# 判断成绩是否及格 if score >= 60:print("及格") else:print("不及格")
-
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
程序设计题
-
打印九九乘法表(用嵌套循环)
示例: 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
-
写一个程序统计列表 [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} 个")
-
编写一个循环,要求用户输入学生姓名,直到输入”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()