美文网首页
2018-09-03-day11_json作业

2018-09-03-day11_json作业

作者: oxd001 | 来源:发表于2018-09-03 20:26 被阅读0次
    1. 提取data.json中的数据,将每条数据中的name、text、love和comment信息。并且保存到另外一个json文件中
    new_dic=[]
    with open('data.json','r',encoding='utf-8') as f:
        dic_all = json.load(f)
        for data in dic_all['data']:
           new_dic.append({'name':data['name'],'text':data['text'],'love':data['love'],'comment':data['comment']})
        with open('new_data.json','w',encoding='utf-8') as ff:
            json.dump(new_dic,ff)
    #2
    
    1. 统计data.json中comment数量超过1000的个数并且将其值全部全程
    count = 0
    with open('data.json',encoding='utf-8') as f:
    
         dic_all = json.load(f)
         for data in dic_all['data']:
             if int(data['comment'])>1000:
                 count += 1
    print(count)
    
    1. 将data.json文件中所有点赞数(love)对应的值超出1000的用k来表示,例如1000修改为1k, 1345修改为1.3k
    with open('data.json',encoding='utf-8') as f:
        dic_all = json.load(f)
        for data in dic_all['data']:
            if int(data['love'])>1000:
                f_num = int(data['love'])/1000
                f_num = str(f_num).split(r'.')[0]+'.'+str(f_num).split(r'.')[1][0:1]+'k'
                data['love'] = f_num
        with open('data.json','w',encoding='utf-8') as f2:
            json.dump(dic_all,f2)
    '''
    结果:
    557
    242
    301
    277
    1.0k
    3.3k
    266
    714
    130
    1.7k
    358
    105
    943
    710
    1.3k
    238
    145
    817
    428
    1.1k
    '''
    
    1. 写猜数字游戏,如果输入有误,提示重新输入,直达输入正确为止。比如:输入数字的时候没有按要求输入,提示重新输入
    import random
    num = random.randint(1,100)
    print('开始猜数字游戏')
    count = 0
    while True:
        guss_num = input('请输入1-100的整数:')
        try:
            guss_num = int(guss_num)
            if not 1<=guss_num<=100:
                print('请输入正确范围的数字!!!')
            elif guss_num<num:
                print('没有猜中,你输入的数字太小')
            elif guss_num>num:
                print('没有猜中,你输入的数字太大')
            else:
                print('恭喜你,猜中了^_^')
                break
            count += 1
        except ValueError:
            print('输入数据非法,请重新输入!!')
    print('你猜了%d次'%count)
    print('游戏结束')
    '''
    结果:
    开始猜数字游戏
    请输入1-100的整数:50
    没有猜中,你输入的数字太大
    请输入1-100的整数:25
    没有猜中,你输入的数字太大
    请输入1-100的整数:12
    没有猜中,你输入的数字太小
    请输入1-100的整数:18
    没有猜中,你输入的数字太小
    请输入1-100的整数:22
    没有猜中,你输入的数字太小
    请输入1-100的整数:23
    没有猜中,你输入的数字太小
    请输入1-100的整数:24
    恭喜你,猜中了^_^
    你猜了6次
    游戏结束
    '''
    
    1. 写学生管理系统的添加学生功能(数据需要本地化),要求除了保存学生的基本信息以外还要保存学生的学号,但是学号需要自动生成,生成原则:
      添加第一个学生对应的学号是:py001
      第二次添加的学生的学号是:py002
      ...
      如果前面的学生因为各种原因被移除了,那后面添加学生的时候原则不变,就是比如上次已经添加到py012,那么前面不管有没有删除情况,再次添加学生的学号是py013
    def creat_stuid():
        '''
        生成学号,并将学号存到count.json里面
        :return: 新的学号
        '''
        try:
            with open('count.json','r',encoding='utf-8') as f:
                stuid = json.load(f)
                with open('count.json', 'w', encoding='utf-8') as f2:
                    json.dump(stuid + 1, f2)
                if stuid<9:
                    return 'py00'+str(stuid+1)
                elif 9<=stuid<99:
                    return 'py0'+str(stuid+1)
                elif stuid< 999:
                    return 'py'+str(stuid+1)
    
        except FileNotFoundError:
            with open('count.json','w',encoding='utf-8') as f:
                json.dump(1,f)
                return 'py001'
    
    def check_student(list_stu:list,name:str):
        '''
        检查学生是否存在
        :param list_stu: 学生列表
        :param name: 要删除的学生姓名
        :return: 学生或者None
        '''
        for stu in list_stu[:]:
            if stu['name']==name:
                return stu
        return None
    
    def input_student():
        '''
        输入学生信息
        :return: 学生信息的字典
        '''
        name = input('请输入学生姓名:')
        age = input('请输入学生年龄:')
        p_num = input('请输入学生的电话号码:')
        return {'name':name,'age':age,'p_num':p_num}
    
    def sys_student():
        while True:
            print('1.添加学生')
            print('2.删除学生')
            print('3.查看学生')
            print('4.退出')
    
            op = input('请输入你的选择:')
            try:
                op = int(op)
                with open('student.json','r',encoding='utf-8') as f:
                    dic_all=json.load(f)
                if op == 1:
                    list_stu=dic_all['stumessage']
                    stuid=creat_stuid()
                    stu=input_student()
                    stu['stuid'] = stuid
                    list_stu.append(stu)
                    with open('student.json','w',encoding='utf-8') as f2:
                        json.dump(dic_all,f2)
                        print('添加成功')
                        sleep(1)
                if op == 2:
                    list_stu=dic_all['stumessage']
                    name = input('请输入你要删除的学生:')
                    stu = check_student(list_stu,name)
                    while not stu:
                        name =input('你要删除的学生不存在,请重新输入:')
                    list_stu.remove(stu)
                    with open('student.json','w',encoding='utf-8') as f2:
                        json.dump(dic_all,f2)
                        print('删除成功')
                        sleep(1)
                if op == 3:
                    list_stu = list_stu=dic_all['stumessage']
                    for stu in list_stu[:]:
                        print('name=%s,age=%s,p_num=%s,stuid=%s'%(stu['name'],
                                                                  stu['age'],stu['p_num'],
                                                             stu['stuid']))
                        sleep(2)
                if op == 4:
                    print('结束程序')
                    exit(0)
    
            except ValueError:
                print('你输入的操作不存在')
            except FileNotFoundError:
                with open('student.json','w',encoding='utf-8') as f2:
                    stu = input_student()
                    stuid = creat_stuid()
                    stu['stuid'] = stuid
                    json.dump({'classname':'pyhton1806','stumessage':[stu,]},f2)
                    print('添加成功')
                    sleep(1)
    sys_student()
    

    相关文章

      网友评论

          本文标题:2018-09-03-day11_json作业

          本文链接:https://www.haomeiwen.com/subject/yniiwftx.html