python练习中遇到的问题

6、给定两行信息,分别为学生姓名和考试成绩,姓名与成绩一一对应,如张三的成绩为80,张飞的成绩为旷考,以此类推。程序输入如下两个字符串:
姓名:张三,张飞,张三丰,王五,李四,赵钱
成绩:80,旷考,93,32, 旷考, 旷考
编写程序,按以下要求处理学生成绩,运行结果必须与图3保持一致。
(1) 将学生信息储存到序列中,旷考用None表示
(2)将两条信息合并,并删除旷考学生;
(3)给姓‘张’的同学,每人成绩加5分;
(4)求平均成绩,并存储在所有学生成绩的最后;
(5)按模板写致家长的一封信,告知家长学生的成绩情况。
预期结果:
(1) 将学生信息储存到序列中,旷考用None表示
[('张三',80),('张飞',None),('张三丰'93),('王五',32),('李四',None),('赵钱',None)]


(2)删除旷考学生
[('张三',80),('张三丰'93),('王五',32)]


(3)给姓‘张’的同学,每人成绩加5分
[('张三',85),('张三丰'98),('王五',37)]


(4)求成绩的平均分,并记录在列表最后
[('张三',85),('张三丰'98),('王五',37),('平均分',73.3]


(5)写一份信,告知家长学生的成绩情况
张三的家长,您好!张三的考试成绩为85,全班平均成绩为73.3
张三丰的家长,您好!张三的考试成绩为98,全班平均成绩为73.3
王五的家长,您好!张三的考试成绩为37,全班平均成绩为73.3


# (1)
student=[('张三',80),('张飞',None),('张三丰',93),('王五',32),('李四',None),('赵钱',None)]
print(student)
# (2)
student=list(filter(lambda x:x[1],student))
print(student)
# (3)
student=[tuple((list(i)[0],list(i)[1]+5)) if i[0][0]=='张' else i for i in student]
print(student)
# (4)
student.append(('平均分',round(sum([i[-1] for i in student])/len(student),1)))
print(student)
# (5)
for i in student[:-1]:
    print("{}的家长,您好! {}的考试成绩为{},全班平均成绩为{}".format(i[0],i[0],i[1],student[-1][-1]))

例子不正确,第三题里王五也加了5分

# 第一题
names = input("姓名:").split(",")
grades = input("成绩:").split(",")
grades = [None if i.strip()=='旷考' else eval(i) for i in grades]
stu = list(zip(names,grades))
print(stu)

# 第二题
stu = [i for i in stu if i[1]]
print(stu)

# 第三题
stu = [(i[0],i[1]+5) if i[0][0]=="张" else i for i in stu]
print(stu)

# 第四题
stu.append(('平均分',round(sum(i[1] for i in stu)/len(stu),1)))
print(stu)

# 第五题
for i in stu[:-1]:
    print(f'{i[0]}的家长,您好!{i[0]}的考试成绩为{i[1]},全班平均成绩为{stu[-1][1]}')

#(1) 将学生信息储存到序列中,旷考用None表示[('张三',80),('张飞',None),('张三丰'93),('王五',32),('李四',None),('赵钱',None)]
name = ['张三','张飞','张三丰','王五','李四','赵钱']

achievement= [80,None,93,32, None, None]
c = list(zip(name,achievement))
print(c)

#(2)删除旷考学生[('张三',80),('张三丰'93),('王五',32)]

name = ['张三','张飞','张三丰','王五','李四','赵钱']
newkey=[]
newvalue=[]

achievement= [80,None,93,32, None, None]
c = dict(zip(name,achievement))
for key, value in c.items():
if str(value)=='None':
pass
else:
newkey.append(key)
newvalue.append(value)

newc = list(zip(newkey,newvalue))
print(newc)

(3)给姓‘张’的同学,每人成绩加5分 [('张三',85),('张三丰'98),('王五',37)]

name = ['张三','张飞','张三丰','王五','李四','赵钱']

achievement=[80,None,93,32, None, None]
length=len(achievement)
i=0
for i in range(length):
if achievement[i]==None:
achievement[i]=0
#print(achievement)
c = dict(zip(name,achievement))
for key, value in c.items():
if str(key[0])=='张':
c[key]=value+5
else:
pass
#print(c)
newkey=[]
newvalue=[]
for key, value in c.items():
newkey.append(key)
newvalue.append(value)

newc = list(zip(newkey,newvalue))
print(newc)

#(4)求成绩的平均分,并记录在列表最后 [('张三',85),('张三丰'98),('王五',37),('平均分',73.3]
import json
name = ['张三','张飞','张三丰','王五','李四','赵钱']

achievement=[80,None,93,32, None, None]
length=len(achievement)
i=0
for i in range(length):
if achievement[i]==None:
achievement[i]=0
#print(achievement)
c = dict(zip(name,achievement))
for key, value in c.items():
if str(key[0])=='张':
c[key]=value+5
else:
pass
#print(c.values())
achievement_sun=min(c.values())
average=sum(c.values())/length
achievement_average=('平均分',average)
newkey=[]
newvalue=[]
for key, value in c.items():
newkey.append(key)
newvalue.append(value)

newc = list(zip(newkey,newvalue))
#print(newc)
newc.append(achievement_average)
print(newc)

(5)写一份信,告知家长学生的成绩情况

张三的家长,您好!张三的考试成绩为85,全班平均成绩为73.3

张三丰的家长,您好!张三的考试成绩为98,全班平均成绩为73.3

王五的家长,您好!张三的考试成绩为37,全班平均成绩为73.3

name = ['张三','张飞','张三丰','王五','李四','赵钱']
achievement=[80,None,93,32, None, None]
length=len(achievement)
i=0
for i in range(length):
if achievement[i]==None:
achievement[i]=0
#print(achievement)
c = dict(zip(name,achievement))
for key, value in c.items():
if str(key[0])=='张':
c[key]=value+5
else:
pass
#print(c.values())
achievement_sun=min(c.values())
average=sum(c.values())/length
achievement_average=('平均分',average)

img

for key, value in c.items():
print(f'{key}的家长,您好!{key}的考试成绩为{value},全班平均成绩为{achievement_average}')