ps1:本人刚刚学python是个小白本白…肯定有n多错误 ,only记录一下啦提升自己的sense of fullfillment! 为继续学习提供动力!!…
ps2:是跟着MOOC翁凯老师的视频学的,老师讲了思路自己试着敲了代码(because我没书找不到书上的示例…)附上视频链接,是第五章的5.3小节。主要是理解Python的字典。附上链接~
https://www.icourse163.org/learn/ZJU-1206456840?tid=1450395457#/learn/content?type=detail&id=1214738094&cid=1218696341
dictNumName = {}##存放第一种类型的输入:有学号,姓名。存放格式例如{"10":'张三','11':......}
dictNumScores = {}##存放第二种类型的输入:有学号,科目,成绩。
##存放格式例如{'10':{'高数':80,'英语':85},'11'......}
courseName = set()##因为最后要在第一行输出表头,所以用一个集合,之后往里面添加时,就算有重复的科目也可以帮我们自动排重
while True:
s = input()
if s=='END':##以END 为结束标志
break
else:
line = s.split(' ')##line是列表,里面有两个或者三个元素
if len(line)==2:##line里面只有学号,姓名
##["10",'张三'],并且一个学号姓名只可能出现一次
dictNumName[line[0]] = line[1]
else:##line里面是学号,一个选课,和其对应的成绩
##['10','高数',90],学号可能会多次出现,学生选修多门课
if line[0] in dictNumScores:##这个line[0]学号之前已经出现过了
d = dictNumScores.get(line[0])##所以dictNumScores在这个字典里已经有这个键,所以直接用d接一下返回的字典就可以了
##现在d = {xx:xx},有内容
d[line[1]] = int(line[2])##
else:
d = {}##这个学号第一次出现,令d是一个新的空的字典
dictNumScores[line[0]] = d##把line[0]作为键直接给dictNumScores,把d这个字典作为line[0]这个键的value。
d[line[1]] = int(line[2])##给d赋新建一个键(科目名称)和值(该科目分数)
courseName.add(line[1])##每次处理一个成绩,把科目名称加到集合里面
##输出
print('学号 姓名 ',end = '')
for item in courseName:
print(item,end = ' ')
print()
for key,value in dictNumScores.items():##{'19401050110':{'高数':80,'英语':85},'19401050111'......}
##按照key一个一个来,现在的key是'19401050110',value是{'高数':80,'英语':85}
print(key+' '+dictNumName[key]+' '+str(value['高数'])+' '+str(value['英语']))
##