Python从相应列表中找取相关数据

无法求出正确结果,希望可以找到基本思路,提供可行方法,帮助题目求解,基础比较弱,希望能得到帮助

img

首先这个满足条件我不知道指的是啥,所以程序可能会很奇怪。

nameGet = input()
rang = input().split(",")
rang = list(map(lambda x: int(x), rang))
index = 0
if nameGet in name[rang[0]:rang[1]]:
  for i in name[rang[0]:rang[1]]:
    if name[i] == nameGet:
      index = i
      break
  print(ID[index], grade[index])
else:
  print("未找到")

给个思路吧,毕竟授人以鱼不如授人以渔。
3个数组长度相同,数据一一对应,里边就有个很关键的点,相关数据在本数组中的下标相同,比如说下标为1对应着1002、李四、87,以此类推,可根据下标获取对应的相关信息,以此为基础,那么,我们现在有成绩区间[a,b],就可以通过遍历成绩列表(for i in range(len(grade))),找到在区间内的成绩,同时确定符合条件的成绩在成绩数组中的下标,有了下标就可以去另外两个数组中去取姓名和学号了。没有符合的成绩,那就是未找到。

有一种比较直接基础的方法:2个字典映射;

用一个字典score_dict的每个字段存入字典的key中,value对应着学生姓名。

另外一个字典stu_dict,key对应着学生姓名,value对应着学生学号。

当输入[a, b]区间的成绩时,只需要获取成绩字典scode_dict的key进行区间判断,取出区间的key以后取出对应value,value就可以对应着想要的学生学号即可。

以下是参考:

ID  = [1001,1002,1003,1004,1005,1006,1007,1008]
name =['张三','李四','王五','赵六','钱七','孙八','周九', '吴十']
grade =[100,87,65,58,78,65,69,85]

score_dict = {}
stu_dict = {}
for index, info in enumerate(grade):
    if info not in score_dict.keys():               # 将学生成绩作为key, 对应姓名value录入score_dict字典
        score_dict[info] = [name[index]]
    else:
        score_dict[info].append(name[index])        # 学生姓名作为key,学号作为value录入stu_dict字典
    stu_dict[name[index]] = ID[index]

a, b = map(int, input('请输入: [a, b] 区间,用空格分割:> ').split())       # 输入 [a, b]区间
iter_List = list(filter(lambda x : [a <= x <= b], score_dict.keys()))   # 筛选区间的score_dict的key值
if len(iter_List):                          # 如果有学生信息
    print("[{}, {}]区间内的学生与学号有:".format(a, b))
    
    for score in iter_List:                 # 输出
        infoNode = score_dict[score]        # 取出该成绩内所有学生
        for StuName in infoNode:            # 输出该成绩内所有学生的成绩
            print("成绩: {}  学生:{} --> {}".format(score, StuName, stu_dict[StuName]))
else:
    print("未找到!")