寫一個學生作業情況查詢錄入的小程序
1、查看學生作業情況:字典查詢
2、錄入學生作業情況:字典添加
3、錄入時允許輸入3次,3次輸入不正確提示失敗次數過多:循環
4、錄入需要判斷為空情況:strip()
homeworks = { 'Amy':{'2018.3.22':'未交','2018.3.23':'已交'}, 'Lily':{'2018.3.22':'未交','2018.3.23':'未交'}, } chioce = {'1':'查詢','2':'錄入'} #定義字典,可以避免輸入‘0’或‘1’以外的選擇時報錯 #user_chioce input是字符串,如果用int轉化非數字的字符串會報錯,所以將key定義為字符串‘1’,而非數字1 user_chioce = input('請輸入您的選擇:1為查詢學生作業情況,2為錄入學生作業情況').strip() if chioce.get(user_chioce) == '查詢': #用get方法,輸入key不在字典中不會報錯。用chioce[user_choice],輸入key不在字典中會報錯 name = input('請輸入要查詢的學生姓名').strip() if name == '': print('查詢學生姓名不能為空') elif name in homeworks: #判斷key是否在字典中存在 print('%s的作業情況是%s'%(name,homeworks[name]))#字典查詢 else: print('查詢學生不存在') elif chioce.get(user_chioce) == '錄入': state = {'0':'未交','1':'已交'} #定義字典,可以避免輸入‘0’或‘1’以外的選擇時報錯 #放在循壞外,避免多次初始化,優化性能 for i in range(3): enter_name = input('請輸入要錄入的學生姓名').strip() enter_date = input('請輸入要錄入學生作業的日期').strip() enter_state = input('請輸入學生作業狀態:0為未交,1為已交').strip() if state.get(enter_state): #只要有狀態就可以,不需要判斷狀態等於‘已交’或‘未交’ if enter_name == '' or enter_date == '': print('學生姓名及作業日期不能為空') else: if enter_name in homeworks: homeworks[enter_name].update({enter_date:state[enter_state]})#學生已存在,更新子字典 else: homeworks[enter_name] = {enter_date:state[enter_state]}#學生不存在,直接添加新k-v print('%s的作業情況是%s'%(enter_name,homeworks[enter_name])) print('所有學生作業情況為%s' % homeworks) break else: print('輸入學生狀態有誤') else: print('選擇輸入有誤')