Не могу найти ошибку в коде (python)

рез-ты Задание

def check_exam(arr1,arr2):
result = 0
for x in arr1:
    for y in arr2:
        if x == y:
            result += 4
        elif x != y:
            result += -1 
        elif y == None:
            result += 0
if result > 0:
    return result 
else:
    return 0

Ответы (1 шт):

Автор решения: Namerek

Первое. У Вас в исходниках y никогда не будет None. Там y может быть == ''

Второе. elif x != y это условие срабатывает и в том случае, если y == '' и вы получаете result += -1 вместо ожидаемого result += 0

И Третье (самое главное) Вы сравниваете каждое проверочное значение экзамена с ответами на все вопросы этого экзамена.

def check(arr1, arr2):
    result = sum(4 if check_val == answer else -1 if answer else 0 for check_val, answer in zip(arr1, arr2))
    return result * (result > 0)


if __name__ == '__main__':
    exams = [
        (['a', 'a', 'b', 'b'], ['a', 'c', 'b', 'd'],),
        (['a', 'a', 'c', 'b'], ['a', 'a', 'b', ''],),
        (['a', 'a', 'b', 'c'], ['a', 'a', 'b', 'c'],),
        (['b', 'c', 'b', 'a'], ['', 'a', 'a', 'c'],)
    ]

    for test in exams:
        print(check(*test))
# 6
# 7
# 16
# 0

UPD Вот так должна Выглядеть написанная Вами функция:

def check_exam(arr1, arr2):
    result = 0

    for x, y in zip(arr1, arr2):
        if x == y:
            result += 4
        elif x != y and y != '': #  можно elif x != y and y:
            result += -1
        elif y == '':
            pass

    if result > 0:
        return result
    else:
        return 0
→ Ссылка