roster是一个保存学生信息的字典,请按照女生优先、低年级在前、总成绩从高到底排序;如果总成绩相同,则顺序比较语文、数学、英语成绩,高者在前。
roster = {
'李妍可': {'性别':'女', '年级':3, '语文':98, '数学':95, '英语':100},
'邬胜杰': {'性别':'男', '年级':5, '语文':95, '数学':100, '英语':97},
'白星瑶': {'性别':'女', '年级':2, '语文':100, '数学':99, '英语':100},
'吴诗涵': {'性别':'男', '年级':3, '语文':98, '数学':92, '英语':90},
'庄嘉顺': {'性别':'男', '年级':5, '语文':97, '数学':95, '英语':100}
}
难度系数:★★★☆☆
上期问题 使用如下的列表来模拟一个地图,将里面的每一个元素视为一个格子。寻找从左上角到右下角的路径,规定只能向右或向下查找,不可回溯。在所有可能的路径中,数字之和最小是多少?[
[2,9,3,7,8],
[4,6,1,6,5],
[3,7,9,2,4],
[6,5,7,4,2]
]
上期问题参考答案
遍历整个列表,将每个元素加上其左侧和上方的两个元素中的最小者。遍历完成后,列表最后一行的最后一个元素,即是最小的路径数字之和。
>>> def find_way(arr):
for i in range(len(arr)):
for j in range(len(arr[0])):
if i and j:
arr[i][j] += min(arr[i-1][j], arr[i][j-1])
elif i:
arr[i][j] += arr[i-1][j]
elif j:
arr[i][j] += arr[i][j-1]
return arr[-1][-1]