文件储存问题
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 = input('请输入分数:')# list(map(lambda 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)
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 = 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 = input('请输入分数:')# list(map(lambda 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)
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 = input('请输入修改的成绩:')
else:
print('查找不到')
a = open('成绩单.pkl', 'wb')
pickle.dump(score, a)
a.close()
if temp == '4':
print('退出程序,再见')
break
isdkz 发表于 2022-4-4 11:09
不建议将对 pickle 文件的读取放在循环里面,应该在一开始就把它读取到一个字典,
然后在循环处理,故对 ...
非常感谢,是我的格局小了,你的方法很好 QQ小鱼 发表于 2022-4-4 11:34
非常感谢,是我的格局小了,你的方法很好
大神,可以帮我看下,我另外一个问题吗?我已经发帖子了,就是读取不了文件的内容,老是报错
页:
[1]