Не могу найти ошибку в коде (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

