无论我尝试什么,我的功能都不会 return

My function does not return anything no matter what I try

def iq_test(numbers):
    i = 0
    length = len(numbers)
    numbers = numbers.split()
    ints = []
    even = []
    odd = []
    try:
        for i in range(i, length, i + 1):
            number = int(numbers[i])
            ints.append(number)
            if ints[i] % 2 == 0:
                even.append(ints[i])
            else:
                odd.append(ints[i])



    except:
        pass
    if len(even) > len(odd):
        return i
    else:
       return i

iq_test("1 2 2")

无论我尝试多少次或尝试多少方法来解决这个问题,它似乎都无法 return i。每当我执行 print(i) 时,它都会给我我想要的确切内容并且功能运行良好,但是当它是 return i 时我什么也得不到,我该如何解决这个问题? 编辑:这个函数应该接受一些数字(字符串格式),其中一个数字的均匀度不同(一个是偶数,其余的是奇数,反之亦然),我想 return 索引那个数字。

我已经修改了您的代码并且它正在运行:

def iq_test(numbers):
     i = 0
     numbers = list(map(int,numbers.split()))
     even = []
     odd = []
     try:
         for i in range(len(numbers)):
            if numbers[i] % 2 == 0:
               even.append(i)
            else:
               odd.append(i)
     except:
         pass
     finally:
         if len(even) > len(odd):
            return odd[0]
         else:
            return even[0]
print(iq_test("1 1 2"))

我修改的点数:

  • 您可以使用 map function
  • 而不是创建另一个列表来将列表元素转换为整数
  • 你应该存储偶数和奇数的索引而不是值本身
  • 如果代码中有一些即使发生错误也必须执行的操作,您可以使用 finally block
def iq_test(numbers):
        numbers = numbers.split()
        length = len(numbers)
        ints = []
        even = []
        odd = []
        try:
            for i in range(0, length):
                number = int(numbers[i])
                ints.append(number)
                if ints[i] % 2 == 0:
                    even.append(ints[i])
                else:
                    odd.append(ints[i])
            if len(even) > len(odd):
                return even[0]
            else:
                return odd[0]
        except:
            pass
        
    ReturnedNumber = iq_test("1 2 2")
    print("Returned number from function:",ReturnedNumber)