写一个学生作业情况查询录入的小程序
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('选择输入有误')