编写了一个学生管理系统,不知道错在哪里?请教大神指点

一开运行时正确的,但只要增加学生后,在查询成绩就会出错,搞不明白!

print(‘’’


1、增加学生姓名
2、查询学生成绩
3、成绩排序
4、查找最高分或最低分
5、查询学生学号


''')

xh={“杜傲男”:1,“陈逸枫”:2,“张飞”:3,“关羽”:4,“黄忠”:5,“赵云”:6}
yw={“1”:88,“2”:98,“3”:90,“4”:91,“5”:93,“6”:95}
sx={“1”:98,“2”:89,“3”:96,“4”:100,“5”:73,“6”:85}
yy={“1”:89,“2”:83,“3”:92,“4”:96,“5”:95,“6”:99}

print(yy)

print(xh)

print(xh.get(“黄忠”))

def xhcx():
a=2
while a!=0:
b=input(“请输入你要查找的学生姓名”)
if b=="退出"or b==“out”:
break
if xh.get(b)==None:
print(“你输入的学生不存在,请重新输入”)
continue
else:
print(b,“的学号是:”,xh.get(b))

def zjxm():
a=2
while a!=0:
b=input(“请输入你要增加的学生姓名”)
c=len(xh)+1
# print©
if b=="退出"or b== “out”:
break
xh[b]=c
yw[c]=input(“请输入语文成绩”)
sx[c]=input(“请输入数学成绩”)
yy[c]=input(“请输入英语成绩”)
print(b,“的语文成绩是”,yw[c],“数学成绩是”,sx[c],“外语成绩是”,yy[c])
def cjcx():
a=2
while a!=0:
b=input(“请输入你要查询成绩的学生姓名”)
if b=="退出"or b==“tuichu”:
break
c= str(xh.get(b))
if xh.get(b)None: #数据类型不同,所以不能直接引用C
print(“你输入的学生不存在”)
continue
else:
print(b,“的语文成绩是”,yw[c],“数学成绩是”,sx[c],“外语成绩是”,yy[c])
def getkey(val,x):#通过函数有值找到相关字典的键key
for key,value in x.items():
if val
value:
return key
def czgf():
a=2
while a!=0:
b=input(“请输入你要查询最高分的学科”)
if b=="退出"or b==“tuichu”:
break
# c= str(xh.get(b))
if b==“语文”:
c=max(yw.values())
d=int(getkey(c,yw))#某个字典的键是字符型,需要转换成整型作为其他字典中的值
e=getkey(d,xh)
print(“语文最高分是”,c,“学生是:”,e)
print(d)
elif b==“数学”:
c=max(sx.values())
d=int(getkey(c,sx))#某个字典的键是字符型,需要转换成整型作为其他字典中的值
e=getkey(d,xh)
print(“数学最高分是”,c,“学生是:”,e)
elif b==“英语”:
c=max(yy.values())
d=int(getkey(c,yy))#某个字典的键是字符型,需要转换成整型作为其他字典中的值
e=getkey(d,xh)
print(“英语最高分是”,c,“学生是:”,e)
ks=2

while ks>0:
a=input(‘’’


1、增加学生姓名
2、查询学生成绩
3、成绩排序
4、查找最高分或最低分
5、查询学生学号


''')
if a=="tuichu" or a=="退出":
    break
if a=='1':
    zjxm()
if a=='2':
    cjcx()
if a=='4':
    czgf()
if a=='5':
    xhcx()

以上是程序代码。

运行第一遍没有错误

但如果运行了增加学生姓名后,再次查询便会报错。
Traceback (most recent call last):
File “/workspace/PythonProject01/main.py”, line 98, in
cjcx()
File “/workspace/PythonProject01/main.py”, line 53, in cjcx
print(b,“的语文成绩是”,yw[c],“数学成绩是”,sx[c],“外语成绩是”,yy[c])
KeyError: ‘7’

请教各位大神,错在哪里?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值