一开运行时正确的,但只要增加学生后,在查询成绩就会出错,搞不明白!
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 valvalue:
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’
请教各位大神,错在哪里?