【问题描述】
实验:编写程序,实现列表的基本操作功能,假定
ls=[['工商2101-01','张三',81,90,88],['工商2101-02','李四',87,77,97],['工商2101-03','王五',89,92,67],['工商2101-04','赵六',62,72,82],['工商2101-05','刘七',91,86,78]]
(1)再输入第6个同学的姓名、3门课的成绩,并添加到ls中;
(2)求出ls中每个同学的总分及均分;
(3)删除ls中赵六的信息;
(4)将ls中同学信息按总分的降序排序,然后显示出来。
【样例输出】
(1)再输入第6个同学的姓名、3门课的成绩,并添加到ls中;添加后的ls信息为:
[['工商2101-01','张三',81,90,88],['工商2101-02','李四',87,77,97],['工商2101-03','王五',89,92,67],['工商2101-04','赵六',62,72,82],['工商2101-05','刘七',91,86,78],['工商2101-06','王晓',98,85,77]]
最后1个元素就是新同学的信息
(2)ls中每个同学的总分及均分,按下面格式显示:
No Name 成绩1 cj2 Cj3 Sum Avg
工商2101-01,张三,81, 90, 88, 251, 83.67
工商2101-02,李四,87, 77, 97, 261, 87
. . .
工商2101-06,王晓,91, 86, 78, 255, 85
(3)删除ls中赵六后的信息;
['工商2101-01','张三',81,90,88],['工商2101-02','李四',87,77,97],['工商2101-03','王五',89,92,67],['工商2101-05','刘七',91,86,78]]
(4)
No 学号 姓名 1 2 3 Sum Avg
1 工商2101-04 赵六 62 72 82 216 72.00
. . .
6
(平均分都取小数点后两位)
提示:将总分放在第一个元素位置,如[261,'工商2101-02','李四',87,77,97],再使用sort()排序
给点思路供你参考。
ls=[['工商2101-01','张三',81,90,88],['工商2101-02','李四',87,77,97],['工商2101-03','王五',89,92,67],['工商2101-04','赵六',62,72,82],['工商2101-05','刘七',91,86,78]]
# 王晓 98 85 77
val_input = input("输入第6个同学的姓名 3门课的成绩,空格分隔\n")
val_lst = val_input.split(" ")
val_item = ['工商2101-06',val_lst[0]]
val_item.extend([int(x) for x in val_lst[1:]])
ls.append(val_item)
print(ls)
print_head = "No Name 成绩1 cj2 Cj3 Sum Avg"
print("\t".join(print_head.split(" ")))
for item in ls:
item_sum = sum(item[2:])
item_avg = round(item_sum/3,2)
item.extend([item_sum,item_avg])
print("\t".join([str(x) for x in item]) )