You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何逐索引对比两个列表并统计匹配元素数量

逐索引对比答案统计得分实现方案

你现有代码已经完成了输入采集,只需要在现有代码后追加对应比对逻辑即可,以下是不同实现方式,按入门友好度排序:


方法1:基础索引遍历(最贴合你当前掌握的语法)

你已经会用range()生成序列,直接通过索引取两个列表同位置元素对比即可,逻辑完全对应“第N题学生答案对比第N题标准答案”的需求:

# 接你已写好的输入采集代码后
for i in range(quest):
    # 取相同索引位置的两个值对比
    if stud[i] == prof[i]:
        score += 1

# 最终score就是答对的总题数,可直接打印输出
print(f"答对总题数:{score}")

逻辑说明:range(quest)生成的i取值是从0到quest-1的整数,正好是两个列表所有元素的索引值,每次循环只对比同题目位置的答案,不会出现跨题匹配的问题。


方法2:匹配索引存储法(对应你之前的思路)

如果需要留存做对的题目索引方便后续做错题分析,可以按你之前的思路新建列表存匹配项的索引,最后取列表长度即为得分:

correct_idx = []
for i in range(quest):
    if stud[i] == prof[i]:
        correct_idx.append(i)

score = len(correct_idx)
# 后续如果要查错题,只要找不在correct_idx里的索引即可,不需要重复遍历

方法3:简洁配对写法(熟悉语法后可使用)

Python内置的zip()函数可以把多个列表同位置的元素打包成元组,不需要手动操作索引就能逐位配对对比,代码更简洁:

score = 0
for s_ans, p_ans in zip(stud, prof):
    if s_ans == p_ans:
        score += 1

# 还可以用生成器表达式一行完成统计
score = sum(1 for s, p in zip(stud, prof) if s == p)

实用优化提示

做选择题判分的时候,建议在输入采集阶段就对答案做标准化处理,避免用户输入时带多余空格、大小写不一致导致误判,比如修改输入append的逻辑:

for i in range(quest):
    ans = input()
    # 去掉答案前后空格、统一转成大写
    stud.append(ans.strip().upper())

for i in range(quest):
    gab = input()
    prof.append(gab.strip().upper())

就算学生输入a、标准答案输入A,程序也能正确判定为答对。

内容的提问来源于stack exchange,提问作者th0bard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:51:46