day11 - 文件操作和异常捕获

1.提取data.json中的数据,将每条数据中的name、text、love和comment信息。并且保存到另外一个json文件中

import json
with open('./files/data.json','r',encoding='utf-8') as f:
    content1 = json.load(f)
data_list = []
for n in range(len(content1['data'])):
    data_dict = {'name':content1['data'][n]['name'],
                 'text':content1['data'][n]['text'],
                 'love':content1['data'][n]['love'],
                 'comment':content1['data'][n]['comment']}
    data_list.append(data_dict)
with open('./files/data1.json','w',encoding='utf-8') as f2:
    json.dump(data_list,f2)

2.统计data.json中comment数量超过1000的个数

import json
with open('./files/data.json','r',encoding='utf-8') as f:
    content1 = json.load(f)
count = 0
for n in range(len(content1['data'])):
    if int(content1['data'][n]['comment']) > 1000:
        count += 1
print('统计data.json中comment数量超过1000的个数:%d ' % count )

result:
统计data.json中comment数量超过1000的个数:0

3.将data.json文件中所有点赞数(love)对应的值超出1000的用k来表示,例如1000修改为1k, 1345修改为1.3k

import json
with open('./files/data.json','r',encoding='utf-8') as f:
    content1 = json.load(f)
for n in range(len(content1['data'])):
    if content1['data'][n]['love'] > '1000':
        str1 = str(int(content1['data'][n]['love'])/1000)
        love_str = str1+'K'
        content1['data'][n]['love'] = love_str
with open('./files/data.json','w',encoding='utf-8') as f2:
    json.dump(content1,f2)

4.写猜数字游戏,如果输入有误,提示重新输入,直达输入正确为止。比如:输入数字的时候没有按要求输入,提示重新输入

import random
print('猜数字游戏(1-100).')
random_num = random.randint(1,100)
while True:
    try:
        num = int(input('输入数字:'))
        if num > 100 or num < 0:
            print('数值越界')
            continue
        elif num < random_num:
            print('小了')
        elif num > random_num:
            print('大了')
        else:
            print('成功')
            break
    except ValueError as err:
        print('ValueError:%s' % err)

5.写学生管理系统的添加学生功能(数据需要本地化),要求除了保存学生的基本信息以外还要保存学生的学号,但是学号需要自动生成,生成原则:
添加第一个学生对应的学号是:py001 第二次添加的学生的学号是:py002 ... 如果前面的学生因为各种原因被移除了,那后面添加学生的时候原则不变,
就是比如上次已经添加到py012,那么前面不管有没有删除情况,再次添加学生的学号是py013

import json
student_list = []
with open('./files/stu.json','r',encoding='utf-8') as f:
    content1 = json.load(f)
add_dict = {}
name = input('输入姓名:')
age = input('输入年龄:')
if len(content1): #若开始列表不是空
    student_id = content1[len(content1)-1]['student_id']
    if int(student_id[2]) > 0: #py紧挨的不是0的情况
        new_id = 'py' + str(int(student_id[2:])+1)
    else: #py紧挨的是0
        right_num = student_id.lstrip('py0') #剔除py和紧挨的0,得到后面直接相加的数字
        new_id ='py' + (len(student_id)-len(right_num)-2)*'0' + str(int(right_num)+1)
    add_dict = {'student_id': new_id, 'student_name': name, 'age': age}
else: #列表开始为空
    add_dict = {'student_id':'py001','student_name':name,'age':age}
content1.append(add_dict)
with open('./files/stu.json','w',encoding='utf-8') as f2:
    json.dump(content1,f2)

你可能感兴趣的:(day11 - 文件操作和异常捕获)