Python对比标准答案与作答列表统计得分的实现问题
列表对比统计答题正确率解决方案
原代码错误点
- 变量名拼写错误:定义的作答列表变量为
answers,循环时写为answer,会直接触发名称报错 - 核心逻辑不符合需求:判分需要按题目顺序一一对应比对,嵌套双层for循环会让每个作答答案匹配所有正确答案,完全不符合按题判分的逻辑
- 遍历列表同时修改列表:在for循环遍历列表的过程中执行
pop操作会导致列表索引偏移,出现元素漏遍历、程序报错的问题;且pop()方法传入的参数是元素索引,原代码传入元素值,会误删其他位置的元素 - 分支逻辑错误:不管答案是否匹配都执行
pop操作,完全不符合统计逻辑
正确实现代码
answers = [1, 1, 2, 2, 1, 2, 1] correct = [1, 2, 1, 2, 2, 1, 2] score = 0 # 按题目顺序配对两个列表的对应元素,逐一比对计数 for user_answer, correct_answer in zip(answers, correct): if user_answer == correct_answer: score += 1 print(score)
上述代码运行后输出结果为2,和实际匹配的题目数量一致。
内容的提问来源于stack exchange,提问作者Calle Ehrnberg
相关产品推荐
相关产品推荐

