第一周
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()