Python知识点串连(一)

在学习过程们,很容易一边学一边忘,本节教程就针对这种情况,以“成绩单”为例,对之前学过的知识点进行回忆串连。

1,Python 变量、数字和字符串

通过前面的学习,我们已经知道如何在 Python 中使用变量、数字和字符串。接下来,我们综合运用前面所介绍的这些知识来创建一个成绩单,以便记录班级里的同学的成绩。

首先,我们需要使用 input() 函数提示用户输入学号和姓名。然后,要求用户输入语文成绩、数学成绩和英语成绩。

接下来,我们会使用 print() 函数把这位同学的学号、姓名、语文成绩、数学成绩、英语成绩和三门功课的总分数打印出来。因为输入的各科得分是字符串类型,所以为了计算总分,我们还需要用 int() 函数把字符串类型转换成数字类型来进行求和计算。

代码如下所示:
name = input("请输入学生姓名:")
userID = input("请输入学生学号:")
score1 = input("请输入学生语文成绩:")
score2 = input("请输入学生数学成绩:")
score3 = input("请输入学生英语成绩:")
total = float(score1) + float(score2) + float(score3) 
print ("学号     姓名     语文    数学    英语    总分")
print (userID,"   " ,name, "   ",score1, "   ",score2, "   ",score3,"   ",total)

我们把这段代码保存到 D:\Python Programs\ch01 目录下,并且将程序文件命名为1.1.py。运行程序后,其输出结果图 1 所示。

Python 变量、数字和字符串
图 1

2,Python 列表

我们已经成功地为一位同学录入了成绩,并且计算出了他的总分。但是,我们发现一个问题,就是现在的成绩单只能记录一个人的成绩;显然,这不能满足我们的要求。接下来,我们要使用学习的列表,为多位同学记录成绩。

pytrhon 列表元素的获取

首先,我们想把3位同学的成绩都记录下来,这就要用到列表的功能。例如,用 nameList 列表来记录姓名,用 IDList 列表来记录学号,用 scoreList1 列表来记录所有人的语文成绩, 用 scoreList2 列表来记录所有人的数学成绩,用列表 scoreList3 来记录所有人的英语成绩。

另外,我们还创建了一个 totalList 列表,用来记录所有人的总成绩。代码如下。
nameList=["李若瑜","张子栋","王小明"]
IDList=["1","2","3"]
scoreList1=[94,100,99]
scoreList2=[93,100,95]
scoreList3=[100,94,100]
totalList=[scoreList1[0] +scoreList2[0] + scoreList3[0],
           scoreList1[1] + scoreList2[1] + scoreList3[1],
           scoreList1[2] +scoreList2[2] + scoreList3[2]]
print( "现在已经有"+str(len(nameList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (IDList[0],"    " ,nameList[0], "    ",scoreList1[0], "   ",scoreList2[0], "    ",scoreList3[0],"   ",totalList[0])
print (IDList[1],"    " ,nameList[1], "    ",scoreList1[1], "   ",scoreList2[1], "    ",scoreList3[1],"   ",totalList[1])
print (IDList[2],"    " ,nameList[2], "    ",scoreList1[2], "   ",scoreList2[2], "    ",scoreList3[2],"   ",totalList[2])

我们创建了 nameList 列表,记录 3 位同学的姓名,分别是“李若瑜”“张子栋”和“王小明”。然后我们创建了 IDList 列表,记录上述 3 位同学的学号,分别是“1”“2”和“3”。

接下来用 scoreList1 列表记录3位同学的语文成绩,分别是 94、100 和 99;用 scoreList2 列表记录3位同学的数学成绩,分别是 93、100 和 95;用 scoreList3 列表记录3位同学的英语成绩,分别是 100、94 和 100。

然后用加法把 scoreList1、scoreList2 和 scoreList3 的各项元素的加和作为 totalList 列表的元素,分别表示 3 位同学的总分。接下来,我们根据 nameList 的长度,告诉用户现在记录了多少位同学的成绩。

最后,把他们具体的得分情况列了出来。运行结果如图 2 所示。

Python 列表
图 2

Python 列表元素的修改

这个时候,我们发现第 2 位同学的语文成绩记录错误,要由 100 改为 98 分,相关代码如下。
nameList=["李若瑜","张子栋","王小明"]
IDList=["1","2","3"]
scoreList1=[94,100,99]
scoreList2=[93,100,95]
scoreList3=[100,94,100]
totalList=[scoreList1[0] +scoreList2[0] + scoreList3[0],
             scoreList1[1] + scoreList2[1] + scoreList3[1],
             scoreList1[2] +scoreList2[2] + scoreList3[2]]
print( "第2位同学的语文成绩录入有误,要改为98分")
scoreList2[1]=98
totalList[1]=scoreList1[1] + scoreList2[1] + scoreList3[1]
print( "第2位同学修改后的成绩如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (IDList[1],"    " ,nameList[1], "    ",scoreList1[1], "   ",scoreList2[1], "    ",scoreList3[1],"   ",totalList[1])

我们修改了 scoreList2 列表中的第 2 个元素,指定新的元素数值为 98。然后打印这位同学的得分,可以看到他的语文成绩已经由 100 改为 98,并且总分也从 294 改为 292。运行结果如图 3 所示。

Python 列表修改
图 3

python 列表元素的添加

接下来,我们又要录入一位同学的信息。我们使用 append() 方法,为各个列表添加新的元素,完整代码如下。
nameList=["李若瑜","张子栋","王小明"]
IDList=["1","2","3"]
scoreList1=[94,100,99]
scoreList2=[93,100,95]
scoreList3=[100,94,100]
totalList=[scoreList1[0] +scoreList2[0] + scoreList3[0],
             scoreList1[1] + scoreList2[1] + scoreList3[1],
             scoreList1[2] +scoreList2[2] + scoreList3[2]]
scoreList1[1]=98
totalList[1]=scoreList1[1] + scoreList2[1] + scoreList3[1]
print( "接下来要录入一位新同学的成绩")
nameList.append ( input("请输入学生姓名:")
IDList.append(input("请输入学生学号:"))
scoreList1.append( input("请输入学生语文成绩:"))
scoreList2.append( input("请输入学生数学成绩:"))
scoreList3.append(input("请输入学生英语成绩:"))
totalList.append(float(scoreList1[3]) + float(scoreList2[3]) + float (scoreList3[3]))
print( "现在已经有"+str(len(nameList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (IDList[0],"    " ,nameList[0], "    ",scoreList1[0], "   ",scoreList2[0], "    ",scoreList3[0],"   ",totalList[0]    )
print (IDList[1],"    " ,nameList[1], "    ",scoreList1[1], "   ",scoreList2[1], "    ",scoreList3[1],"   ",totalList[1])
print (IDList[2],"    " ,nameList[2], "    ",scoreList1[2], "   ",scoreList2[2], "    ",scoreList3[2],"   ",totalList[2])
print (IDList[3],"    " ,nameList[3], "    ",scoreList1[3], "   ",scoreList2[3], "    ",scoreList3[3],"   ",totalList[3])

我们使用 append() 方法把用户输入的姓名增加到了 nameList 列表中,把输入的学号加入到 IDList 列表,把语文成绩加入到 scoreList1 列表,把数学成绩加入到 scoreList2 列表,把英语成绩加入到 scoreList3 列表。

然后通过 float() 函数把输入的字符串转换成数字,并且把相加后的结果添加到 totalList 列表。根据 nameList 列表的长度,我们知道现在已经有 4 位同学的成绩,并且把他们具体的得分情况列了出来。运行结果如图 4 所示。

python append() 方法
图 4

Python 列表元素的删除

这个时候,我们又发现王小明同学已经转学了,所以需要将他从我们的成绩单中移除。我们使用 index() 方法查找到王小明同学在列表中的索引值,然后把各个列表中对应的索引元素移除,完整代码如下。
nameList=["李若瑜","张子栋","王小明"]
IDList=["1","2","3"]
scoreList1=[94,100,99]
scoreList2=[93,100,95]
scoreList3=[100,94,100]
totalList=[scoreList1[0] +scoreList2[0] + scoreList3[0],
             scoreList1[1] + scoreList2[1] + scoreList3[1],
             scoreList1[2] +scoreList2[2] + scoreList3[2]]
scoreList1[1]=98
totalList[1]=scoreList1[1] + scoreList2[1] + scoreList3[1]

print( "接下来要录入一位新同学的成绩")
nameList.append ( input("请输入学生姓名:") )
IDList.append(input("请输入学生学号:"))
scoreList1.append( input("请输入学生语文成绩:"))
scoreList2.append( input("请输入学生数学成绩:"))
scoreList3.append(input("请输入学生英语成绩:"))
totalList.append(float(scoreList1[3]) + float(scoreList2[3]) + float(scoreList3[3]))

print( "现在要将王小明同学的记录从列表中删除")
index=nameList.index("王小明")
del nameList[index],IDList[index],scoreList1[index],scoreList2[index],scoreList3[index], totalList[index]
print( "现在已经有"+str(len(nameList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (IDList[0],"    " ,nameList[0], "    ",scoreList1[0], "   ",scoreList2[0], "    ",scoreList3[0],"   ",totalList[0])
print (IDList[1],"    " ,nameList[1], "    ",scoreList1[1], "   ",scoreList2[1], "    ",scoreList3[1],"   ",totalList[1])
print (IDList[2],"    " ,nameList[2], "    ",scoreList1[2], "   ",scoreList2[2], "    ",scoreList3[2],"   ",totalList[2])

我们使用 index() 方法在 nameList 列表中找到“王小明”在列表中的位置,并且将其赋值给变量 index。然后使用 del() 方法将所有列表中的第 index 项元素都删除掉。然后我们再次打印成绩单,现在可以看到只有3位同学的成绩,“王小明”的信息已经不在成绩单中。运行结果如图 5 所示。

Python 列表元素的删除
图 5

Python 列表元素的排序

最后,我们需要把总成绩按照由低到高排列出来,可以使用 sort() 方法来列表排序,从而完成这个任务,完整代码如下。
nameList=["李若瑜","张子栋","王小明"]
IDList=["1","2","3"]
scoreList1=[94,100,99]
scoreList2=[93,100,95]
scoreList3=[100,94,100]
totalList=[scoreList1[0] +scoreList2[0] + scoreList3[0],
             scoreList1[1] + scoreList2[1] + scoreList3[1],
             scoreList1[2] +scoreList2[2] + scoreList3[2]]
scoreList1[1]=98
totalList[1]=scoreList1[1] + scoreList2[1] + scoreList3[1]

print( "接下来要录入一位新同学的成绩")
nameList.append ( input("请输入学生姓名:") )
IDList.append(input("请输入学生学号:"))
scoreList1.append( input("请输入学生语文成绩:"))
scoreList2.append( input("请输入学生数学成绩:"))
scoreList3.append(input("请输入学生英语成绩:"))
totalList.append(float(scoreList1[3]) + float(scoreList2[3]) + float(scoreList3[3]))

print( "现在要将王小明同学的记录从列表中删除")
index=nameList.index("王小明")
del nameList[index],IDList[index],scoreList1[index],scoreList2[index],scoreList3[index], totalList[index]

print( "请把总成绩按照从低到高排列")
totalList.sort()
print(totalList)

使用 sort() 方法对 totalList 列表排序,然后把结果打印了出来。运行结果如图 6 所示。

Python sort() 元素排序
图 6

我们看到,3 位同学中最低分是 282 分,最高分是 292 分。但是,由于同学们信息都是存储在不同的列表中,如果改变了其中一个列表的顺序,那么所有的信息就都混乱了。

对于这个问题?下面我们将详细介绍

3,Python 元组和字典

我们使用列表设计了一个成绩单,可以记录多位同学的各科成绩和总分等信息。但是,这些信息保存在不同的列表中,当一个列表出现变化,尤其是列表中元素顺序改变时,就会影响到其他的列表。那么有没有什么办法,在一个列表中保存所有这些信息呢?

我们可以利用字典来保存每位同学的信息,然后把每个字典作为元素添加到列表中,这样通过嵌套字典的列表,我们就把所有的信息都包含到一个列表之中。完整代码如下。

studentList=[]
student={}
student={"name":"李若瑜","ID":"1","score1":95,"score2":100,"score3":96,"total":291}
studentList.append(student)
student={"name":"张子栋","ID":"2","score1":93,"score2":100,"score3":95,"total":288}
studentList.append(student)
student={"name":"王小明","ID":"3","score1":100,"score2":94,"score3":100,"total":294}
studentList.append(student)
print( "现在已经有"+str(len(studentList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (
studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"), "   ",studentList[0].get("total"))
print (
studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",
studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))

我们先创建了空的列表 studentList 和空的字典 student。然后,将一个字典赋值给变量 student,字典中的键分别是“name”“ID”“score1”“score2”“score3”和“total”,对应的值分别是“李若瑜”“1”“95”“100”“96”和“291”。

然后使用 append() 方法把 student 作为一个元素添加到列表 studentList 中。接下来,依次添加“张子栋”和“王小明”的信息。当把 studentList 打印出来时,可以看到这个列表中就包含了上述 3 位同学的信息,如图 7 所示。


Python 元组和字典
图 7


假设还是要把第 2 位同学的语文成绩由 100 改为 98 分,完整代码如下。

studentList=[]
student={}
student={"name":"李若瑜","ID":"1","score1":95,"score2":100,"score3":96,"total":291}
studentList.append(student)
student={"name":"张子栋","ID":"2","score1":93,"score2":100,"score3":95,"total":288}
studentList.append(student)
student={"name":"王小明","ID":"3","score1":100,"score2":94,"score3":100,"total":294}
studentList.append(student)
studentList[1]["score2"]=98
studentList[1]["total"]=studentList[1]["score1"]+studentList[1]["score2"]+studentList[1]["score3"]
print( "第2位同学的语文成绩录入有误,要改为98分")
print( "第2位同学修改后的成绩如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))

将 studentList 列表中的第 2 个元素中的键“score1”所对应的值,修改为“98”。然后打印这位同学的得分,可以看到他的语文成绩已经由 100 改为 98,并且总分也从 288 改为 286,如图 8 所示。

Python 元组和字典
图 8

接下来又要录入一位同学的成绩。使用 append() 方法增加字典 student,完整代码如下。

studentList=[]
student={}
student={"name":"李若瑜","ID":"1","score1":95,"score2":100,"score3":96,"total":291}
studentList.append(student)
student={"name":"张子栋","ID":"2","score1":93,"score2":100,"score3":95,"total":288}
studentList.append(student)
student={"name":"王小明","ID":"3","score1":100,"score2":94,"score3":100,"total":294}
studentList.append(student)

studentList[1]["score1"]=98
studentList[1]["total"]=studentList[1]["score1"]+studentList[1]["score2"]+studentList[1]["score3"]
print( "接下来要录入一位新同学的成绩")
student={}
student["name"]=input("请输入学生姓名:")
student["ID"]=input("请输入学生学号:")
student["score1"]=input("请输入学生语文成绩:")
student["score2"]=input("请输入学生数学成绩:")
student["score3"]=input("请输入学生英语成绩:")
student["total"]=float(student["score1"]) + float(student["score2"]) + float(student["score3"])
studentList.append(student)
print( "现在已经有"+str(len(studentList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
    studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
    studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))

上面的代码的运行结果如图 9 所示。

Python 增加字典
图 9

假设需要把总成绩按照由低到高排列出来,可以使用 sort() 方法对列表排序,而且还需要指定参数 key,完整代码如下。
studentList=[]
student={}
student={"name":"李若瑜","ID":"1","score1":95,"score2":100,"score3":96,"total":291}
studentList.append(student)
student={"name":"张子栋","ID":"2","score1":93,"score2":100,"score3":95,"total":288}
studentList.append(student)
student={"name":"王小明","ID":"3","score1":100,"score2":94,"score3":100,"total":294}
studentList.append(student)

studentList[1]["score1"]=98
studentList[1]["total"]=studentList[1]["score1"]+studentList[1]["score2"]+studentList[1]["score3"]

print( "接下来要录入一位新同学的成绩")
student={}
student["name"]=input("请输入学生姓名:")
student["ID"]=input("请输入学生学号:")
student["score1"]=input("请输入学生语文成绩:")
student["score2"]=input("请输入学生数学成绩:")
student["score3"]=input("请输入学生英语成绩:")
student["total"]=float(student["score1"]) + float(student["score2"]) + float(student["score3"])
studentList.append(student)

print( "现在已经有"+str(len(studentList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
    studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
    studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))
studentList.sort(key=lambda x: x["total"])
print ("按照总分由低到高排列学生信息")

print (" 学号      姓名     语文    数学    英语    总分")
print (
   studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
   studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
   studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
   studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))

以上代码的运行结果如图 10 所示。

python 元组与字典
图 10

当然,也可以按照总分从高到低来排列,只需要在 sort() 方法的括号中增加 reverse=True 就可以,这表示按照倒序排列,完整代码如下。
studentList=[]
student={}
student={"name":"李若瑜","ID":"1","score1":95,"score2":100,"score3":96,"total":291}
studentList.append(student)
student={"name":"张子栋","ID":"2","score1":93,"score2":100,"score3":95,"total":288}
studentList.append(student)
student={"name":"王小明","ID":"3","score1":100,"score2":94,"score3":100,"total":294}
studentList.append(student)

studentList[1]["score2"]=98
studentList[1]["total"]=studentList[1]["score1"]+studentList[1]["score2"]+studentList[1]["score3"]

print( "接下来要录入一位新同学的成绩")
student={}
student["name"]=input("请输入学生姓名:")
student["ID"]=input("请输入学生学号:")
student["score1"]=input("请输入学生语文成绩:")
student["score2"]=input("请输入学生数学成绩:")
student["score3"]=input("请输入学生英语成绩:")
student["total"]=float(student["score1"]) + float(student["score2"]) + float(student["score3"])
studentList.append(student)
print( "现在已经有"+str(len(studentList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
    studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
    studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))

studentList.sort(key=lambda x: x["total"],reverse=True)
print ("按照总分由高到低排列学生信息")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
    studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
    studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))

代码的运行结果如图 11 所示。
Python 元组与字典
图 11

如果想要按照某一门课程的成绩来排序,也是可以做到的,例如要按照语文成绩排序。但是需要注意的是,因为陈景贤的语文成绩是录入的,也就是说,他的语文成绩现在是字符串型的,所以排序时,需要使用 float() 函数将其转换成浮点数。完整代码如。
studentList=[]
student={}
student={"name":"李若瑜","ID":"1","score1":95,"score2":100,"score3":96,"total":291}
studentList.append(student)
student={"name":"张子栋","ID":"2","score1":93,"score2":100,"score3":95,"total":288}
studentList.append(student)
student={"name":"王小明","ID":"3","score1":100,"score2":94,"score3":100,"total":294}
studentList.append(student)

studentList[1]["score2"]=98
studentList[1]["total"]=studentList[1]["score1"]+studentList[1]["score2"]+studentList[1]["score3"]

print( "接下来要录入一位新同学的成绩")
student={}
student["name"]=input("请输入学生姓名:")
student["ID"]=input("请输入学生学号:")
student["score1"]=input("请输入学生语文成绩:")
student["score2"]=input("请输入学生数学成绩:")
student["score3"]=input("请输入学生英语成绩:")
student["total"]=float(student["score1"]) + float(student["score2"]) + float(student["score3"])
studentList.append(student)
print( "现在已经有"+str(len(studentList)) +"位同学的成绩,他们的得分如下:")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
    studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
    studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))

studentList.sort(key=lambda x: float(x["score1"]))
print ("按照语文成绩由低到高排列学生信息")
print (" 学号      姓名     语文    数学    英语    总分")
print (
    studentList[0].get("ID"),"    " ,studentList[0].get("name"), "    ",studentList[0].get("score1"), "   ",studentList[0].get("score2"), "    ",studentList[0].get("score3"),"   ",studentList[0].get("total"))
print (
    studentList[1].get("ID"),"    " ,studentList[1].get("name"), "    ",studentList[1].get("score1"), "   ",studentList[1].get("score2"), "    ",studentList[1].get("score3"),"   ",studentList[1].get("total"))
print (
    studentList[2].get("ID"),"    " ,studentList[2].get("name"), "    ",studentList[2].get("score1"), "   ",studentList[2].get("score2"), "    ",studentList[2].get("score3"),"   ",studentList[2].get("total"))
print (
    studentList[3].get("ID"),"    " ,studentList[3].get("name"), "    ",studentList[3].get("score1"), "   ",studentList[3].get("score2"), "    ",studentList[3].get("score3"),"   ",studentList[3].get("total"))

代码的运行结果如图 12 所示,陈景贤的语文成绩最低,所以排在第 1 位,而王小明的成绩最高,排在最后。

Python 元组与字典
图 12

现在,我们又面临一个问题。如果我们想查看某位同学的得分,该怎么做呢?上面我们使用index()方法找到对应的索引值,但是现在由于列表中的元素是字典类型,所以没有办法直接使用index()方法。没关系,先不着急!在下中,我们将利用新学习的知识来进一步改进成绩单程序。