首页 > 解决方案 > 在python中检查考试

问题描述

我正在尝试解决这个问题:

第一个输入数组是考试正确答案的关键,例如["a", "a", "b", "d"]. 第二个包含学生提交的答案。

这两个数组不为空且长度相同。返回此答案数组的分数,每个正确答案为 +4,每个错误答案为 -1,每个空白答案为 +0,表示为空字符串(在 C 中使用空格字符)。

我不断收到此代码的此错误消息:

UnboundLocalError: local variable 'i' referenced before assignment

这是我的代码:

def check_exam(arr1, arr2):
    res = 0
    for i in arr1[i]:
        while arr2[i] != "":
            if arr2[i] == arr1[i]:
                res += 4
            else:
                res -= 1
    return res
    
print(check_exam(["a", "a", "b", "b"], ["a", "c", "b", "d"]))

标签: pythonpython-3.x

解决方案


该错误是由于for i in arr[i]i在声明它之前使用的。

我以这种方式解决了这个问题:

def check_exam(arr1, arr2):
res = 0

#As len(arr1) = len(arr2) I choose one of them.
for i in range(len(arr1)):

    if arr1[i] != arr2[i]:

        if arr2[i] != "": res-=1
        else: res+=0 #Blank answer.

    elif arr1[i] == arr2[i]: res+=4

return res

print(check_exam(["a","a","b","b"],["a","c","b","d"]))

您可以使用 简单地比较具有相同索引的两个数组的元素for i in range(len(<one of the two arrays>))


推荐阅读