el código de Python no funciona - agregando números impares de una matriz [duplicado]

0

Estoy tratando de escribir una función en la que acepte las diversas matrices y agregue el total de los números impares. Luego, si el total es correcto, devuelve "PRUEBA APROBADA" pero no puedo completar el código. el código es:

def odd_ones(array):
  total = 0
  for i in range(0,len(array)-1):
    if array[i] % 2 != 0:
      total += array[i]
      print(total)
    else:
      print("no odd numbers detected")



def test_odd_ones():
  print("Odd Ones Unit Test...")
  print("")
  if odd_ones([1,2,3,4,5,6,7,8,9]) == 25:
    print("TEST PASSED")
  else:
    print("TEST FAILED")
  if odd_ones([3,3,1,1,5,5]) == 18:
    print("TEST PASSED")
  else:
    print("TEST FAILED")
  if odd_ones([2,4,6,10,20]) == 0:
    print("TEST PASSED")
  else:
    print("TEST FAILED")
  if odd_ones([]) == "Empty Array":
    print("TEST PASSED")
  else:
    print("TEST FAIL
3
  • 2
    Deberías regresar totaldeodd_ones 13 de oct a las 18:15
  • necesitas devolver el total de la función 13 de oct a las 18:16
  • Además, for i in range(0, len(array)-1):ignora el último elemento de la lista. Puede usar for i in range(0, len(array)):o for i in range(len(array)):ofor i in array: 13 de oct a las 18:16
1

Aquí debe usar range(0, len(array))porque el rango itera hasta n-1. Debe regresar totalde la función para que pueda usarse mientras llama a la función.

def odd_ones(array):
  if len(array) == 0:
    return "Empty Array"
  total = 0
  for i in range(0,len(array)):
    if array[i] % 2 != 0:
      total += array[i]
  return total


def test_odd_ones():
  print("Odd Ones Unit Test...")
  print("")
  if odd_ones([1,2,3,4,5,6,7,8,9]) == 25:
    print("TEST PASSED")
  else:
    print("TEST FAILED")
  if odd_ones([3,3,1,1,5,5]) == 18:
    print("TEST PASSED")
  else:
    print("TEST FAILED")
  if odd_ones([2,4,6,10,20]) == 0:
    print("TEST PASSED")
  else:
    print("TEST FAILED")
  if odd_ones([]) == "Empty Array":
    print("TEST PASSED")
  else:
    print("TEST FAILED")