【问题描述】 编写程序,(1)再输入姓名、成绩 (4)将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]]

(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]) )

img