n = int(input("输入学生人数:"))
lst = []
for i in range(n):
姓名 = input(f"第{i+1}个学生的姓名:")
学号 = input(f"第{i+1}个学生的学号:")
a = float(input(f"第{i+1}个学生的语文课程的平时成绩:"))
b = float(input(f"第{i+1}个学生的语文课程的期末成绩:"))
c = float(input(f"第{i+1}个学生的数学课程的平时成绩:"))
d = float(input(f"第{i+1}个学生的数学课程的期末成绩:"))
e = float(input(f"第{i+1}个学生的英语课程的平时成绩:"))
f = float(input(f"第{i+1}个学生的英语课程的期末成绩:"))
stu = {"姓名":姓名,"学号":学号,"a":a,"b":b,"c":c,"d":d,"e":e,"f":f}#逗号改成冒号
stu["绩点"] = round((a+b+c+d+e+f)/120,2)
lst.append(stu)
print(*lst,sep='\n')
lst.sort(key=lambda x: x['绩点'], reverse=True)
for x in lst:
print('姓名:',x['姓名'],'学号:',x['学号'],'绩点:',x['绩点'])#这里冒号删掉,逗号从引号里拿出来
代码贴出来,我执行一下看看
f那里应该是冒号,你写成逗号了
一个对象的哈希值在生命周期内不改变,就被成为 可哈希。可哈希性使得对象能够作为字典键或集合成员使用,因为这些数据结构要在内部使用哈希值。
可变容器(例如列表或字典)都不可哈希。所以,回过头来看文章开头的 TypeError ,就容易解释了,只有可哈希对象才能作为字典的键。
同样,文章开头的列表 a ,也不能作为集合成员使用
3 >= 1 ----- True(或的含义)
与或非逻辑返回值就参照学的逻辑即可 ----- 1 or 3 — 1 1 and 3 ---- 3
取反运算要考虑符号位的取反,结果可能为负数
身份运算符:is、not is ,判断两个标识符是不是引用自同一个对象,即两个标识符的内容是否一样
成员运算符:in、not in
python中每使用调用一次 input(),就输入一行的内容。输入内容有几行,就要用几次 input()
在python解释器中输入 dir(相关数据类型的符号)即可显示这些数据对象的内置方法eg:dir([])
在Python中,变量就是变量,他没有类型,所说的类型是变量所指内存中的对象的类型
注意!!!,如果循环被break语句终止,则与循环配套的else语句不会被执行,else语句只会在for语句顺利执行完毕,或者while语句条件为False时才会被执行
pass语句是空语句,主要为了保持程序结构的完整性。pass不做任何事情,一般用作占位语句。
当用户无法预计参数的数目时,可以使用*args类型的参数,*args代表一个元祖对象。args直接是元祖对象的变量名,**args代表一个字典对象,其中参数等号左边为键,右边为值,args直接是字典对象的变量名
Python中赋值的实质是传递对对象的一种引用,当一个变量的值赋值给另一个变量时,二者同时指向同一个内存空间,只要不改变二者指向的内存空间地址(组合数据类型改变值),改变其中一个对象的值,另一个也会改变,深刻理解指针指向同一个内存空间的含义
!!!注意:字符串的操作,切片如果不加步长,则一定是正向递增反向递减,才会满住某个范围的截取,如果有步长,则为左边开始截取的值,右边为结束,从左到右还是从右到左要根据正负值去判断,注意字符的最后一个为x[-1]
python内置函数集:
eval() 函数用来执行一个字符串表达式,并返回表达式的值