|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
print('''|---欢迎进入成绩录入程序---|
|---1:查询学生成绩:---|
|---2:插入新的同学成绩---|
|---3:修改已有同学成绩---|
|---4:退出成绩录入程序---|''')
import pickle
c = {}
while 1:
temp = input('请输入相关的指令:')
if temp == '2':
while 1:
a = open('E:/成绩单.pkl', 'rb')
c = pickle.load(a)
tem = input('插入,请重新输入名字(输入数字结束程序):')
if tem.isdigit():
break
while 1:
if tem in c:
tem = input('同学成绩已存在,请重新输入名字:')
else:
break
c[tem] = input('请输入分数:') # list(map(lambda x,y:[x,y],a,b)) 、list(zip(a,b)
a = open('E:/成绩单.pkl', 'wb')
pickle.dump(c, a)
a.close()
if temp == '1':
while 1:
a = open('E:/成绩单.pkl', 'rb')
c = pickle.load(a)
tem = input('请输入名字(查询,输入数字结束程序):')
if tem.isdigit():
break
if tem in c:
print(tem, '的成绩是:', c[tem])
else:
print('查找不到')
a = open('E:/成绩单.pkl', 'wb')
pickle.dump(c, a)
a.close()
if temp == '3':
while 1:
a = open('E:/成绩单.pkl', 'rb')
c = pickle.load(a)
tem = input('请输入修改同学的名字(修改,输入数字结束程序):')
if tem.isdigit():
break
if tem in c:
c[tem] = input('请输入修改的成绩:')
else:
print('查找不到')
a = open('E:/成绩单.pkl', 'wb')
pickle.dump(c, a)
a.close()
if temp == '4':
print('退出程序,再见')
break
这个数据储存有问题,请问有什么解决问题吗
不建议将对 pickle 文件的读取放在循环里面,应该在一开始就把它读取到一个字典,
然后在循环处理,故对你的代码修改如下:
- import os
- import pickle
- print('''|---欢迎进入成绩录入程序---|
- |---1:查询学生成绩:---|
- |---2:插入新的同学成绩---|
- |---3:修改已有同学成绩---|
- |---4:退出成绩录入程序---|''')
- # 先判断 成绩单.pkl 是否存在,不存在则创建一个空成绩单
- if not os.path.exists('成绩单.pkl'):
- with open('成绩单.pkl', 'wb') as f:
- pickle.dump({}, f)
- # 把 成绩单 先读取到 score,在循环里不再读取 成绩单,直接对 score 操作
- with open('成绩单.pkl', 'rb') as f:
- score = pickle.load(f)
- while 1:
- temp = input('请输入相关的指令:')
- if temp == '2':
- while 1:
- tem = input('插入,请重新输入名字(输入数字结束程序):')
- if tem.isdigit():
- break
- while 1:
- if tem in score:
- tem = input('同学成绩已存在,请重新输入名字:')
- else:
- break
- score[tem] = input('请输入分数:') # list(map(lambda x,y:[x,y],a,b)) 、list(zip(a,b)
- a = open('成绩单.pkl', 'wb')
- pickle.dump(score, a)
- a.close()
- if temp == '1':
- while 1:
- tem = input('请输入名字(查询,输入数字结束程序):')
- if tem.isdigit():
- break
- if tem in score:
- print(tem, '的成绩是:', score[tem])
- else:
- print('查找不到')
- a = open('成绩单.pkl', 'wb')
- pickle.dump(score, a)
- a.close()
- if temp == '3':
- while 1:
- a = open('成绩单.pkl', 'rb')
- c = pickle.load(a)
- tem = input('请输入修改同学的名字(修改,输入数字结束程序):')
- if tem.isdigit():
- break
- if tem in score:
- score[tem] = input('请输入修改的成绩:')
- else:
- print('查找不到')
- a = open('成绩单.pkl', 'wb')
- pickle.dump(score, a)
- a.close()
- if temp == '4':
- print('退出程序,再见')
- break
复制代码
|
|