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

Python中如何将单列表元素与两列表对比?代码输出始终为0排查

代码问题分析与修正

你的代码存在以下几个核心问题,导致输出不符合预期甚至会报错:

  • 循环逻辑完全错误:你用两层嵌套循环遍历所有用户输入和正确答案,这不是「对应位置元素对比」的逻辑。比如用户输入的第一个"A"会和正确答案里的"A"、"B"、"B"逐一对比,匹配到一次就加1,这会导致重复计分,完全偏离了“每道题对应判分”的需求。
  • 未定义变量报错:代码中if p is x:里的x从未定义,实际运行时会直接抛出NameError,你说输出始终为0,可能是没实际运行到这部分逻辑或者忽略了报错。
  • 错误的相等判断方式:用is判断字符串是否相等是错误的,is用来判断两个对象是否是同一个内存对象,正确的字符串相等判断应该用==。
  • 扣分逻辑混乱:就算用户输入和正确答案不匹配,你又循环遍历所有错误答案去扣分,这会导致同一道题被多次扣分,逻辑完全不合理。

修正后的代码

如果你需要的是对应位置逐一对比,答对加分、答错扣分的逻辑,代码应该改成这样:

UserInput = ["A", "B", "A"]
CorrectAnswers = ["A", "B", "B"]
FalseAnswers = ["B", "A", "A"]

def run():
    score = 0
    # 按位置对应遍历三个列表的元素
    for user_ans, correct_ans, false_ans in zip(UserInput, CorrectAnswers, FalseAnswers):
        if user_ans == correct_ans:
            score += 1
        elif user_ans == false_ans:
            score -= 1
        else:
            raise ValueError("Invalid Input")
    print(score)

run()

这段代码用zip函数将三个列表的对应位置元素配对,逐一判断:

  • 用户答案和正确答案一致时加1分
  • 和对应位置错误答案一致时减1分
  • 输入既不是正确也不是错误答案时抛出异常

运行后输出为1,符合预期:前两题答对(+2),第三题答错(-1),总分1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:05:25