# 4. 修改之前的學生信息管理程序,實現添加菜單和選擇菜單操作功能: # 菜單: # +-----------------------------+ # | 1) 添加學生信息 | # | 2) 查看所有學生信息 | # | 3) 修改學生的成績 | # | 4) 刪除學生信息 | # | q) 退出 | # +-----------------------------+ # 請選擇: 1 # 請輸入姓名:.... # 請選擇: 3 # 請輸入修改學生的姓名: .... # (要求每個功能都對應一個函數) def input_student(): # 此函數獲取學生信息,並返回學生信息的字典的列表 L = [] # d = {} # 此處所有學生將共用一個字典,會出錯 while True: name = input("請輸入學生姓名: ") if not name: break age = int(input("請輸入學生年齡: ")) score = int(input("請輸入學生成績: ")) d = {} # 重新創建一個新的字典 d['name'] = name d['age'] = age d['score'] = score L.append(d) return L def output_student(L): # 以表格形式再打印學生信息 print('+------------+------+-------+') print('| name | age | score |') print('+------------+------+-------+') for d in L: # d綁定的是字典 t = (d['name'].center(12), str(d['age']).center(6), str(d['score']).center(7)) line = "|%s|%s|%s|" % t # t是元組 print(line) print('+------------+------+-------+') # 寫一個打印菜單的函數 def show_menu(): print('+-----------------------------+') print('| 1) 添加學生信息 |') print('| 2) 查看所有學生信息 |') print('| 3) 修改學生的成績 |') print('| 4) 刪除學生信息 |') print('| q) 退出 |') print('+-----------------------------+') # 此函數用來存改學生的信息 def modify_student_info(lst): name = input("請輸入要修改學生的姓名: ") for d in lst: if d['name'] == name: score = int(input("請輸入新的成績: ")) d['score'] = score print("修改", name, '的成績為', score) return else: print("沒有找到名為:", name, '的學生信息') # 定義一個刪除學生信息的函數 def delete_student_info(lst): name = input("請輸入要刪除學生的姓名: ") for i in range(len(lst)): # 從0開始把所有索引取出一遍 if lst[i]['name'] == name: del lst[i] print("已成功刪除: ", name) return True else: print("沒有找到名為:", name, "的學生") # 定義一個主函數,用來獲取鍵盤操作,實現選擇的功能 def main(): docs = [] # 此列表用來存儲所有學生的信息的字典 while True: show_menu() s = input("請選擇: ") if s == '1': docs += input_student() elif s == '2': output_student(docs) elif s == '3': # 修改學生成績 modify_student_info(docs) elif s == '4': # 刪除學生成績 delete_student_info(docs) elif s == 'q': return # 結束此函數執行,直接退出 main() 總結一下思路:學生的所有信息都是輸入進變量里,然后將變量指向字典對應鍵的值,由此單個學生的信息都存入字典中,再將這些字典存在列表中,遍歷列表遍歷學生信息