写一个学生作业情况查询录入的小程序

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('选择输入有误')

 

posted on 2018-03-30 18:06  忻冉然  阅读(3491)  评论(0编辑  收藏  举报