def sumUp(array): for row in array: if row > 5: array.remove(row) add = sum(array) return add
Массив [1, 20, 20, 5, 50, 2, 2, 1]
[1, 20, 20, 5, 50, 2, 2, 1]
Массив возвращен [1, 20, 5, 2, 2, 1]
[1, 20, 5, 2, 2, 1]
Мне было интересно, где я ошибся, поскольку эти 20 все еще в массиве.
Это вызвано тем, что вы удаляете элементы из списка, по которому вы выполняете итерацию.
Вы можете использовать понимание списка, чтобы создать новый список, содержащий только те элементы, которые вы не хотите удалять:
def sumUp(array): array = [x for x in array if x <= 5] add = sum(array) return add
Замените
for row in array:
на
for row in array[:]:
Таким образом, вы будете перебирать копию array, которая не будет изменена вашим remove s.
array
remove
при удалении вы пропускаете следующий элемент, поэтому делайте это в обратном порядке
def sumUp(array): for i,row in enumerate(reversed(array)): if row > 5: array.remove(row) print(array) add = sum(array) return add ar = [1, 20, 20, 5, 50, 2, 2, 1] sumUp(ar)
[1, 5, 2, 2, 1] 11