为什么我没有得到 84.0?编程有什么问题?您必须为此功能使用递归

Why I am not getting 84.0? Whats wrong in the programming ?You must use recursion for this function

这是我的代码:

def multiplyNums(list1):

    result = 1

    for element in list1:
        #print(element)
        if (type(element) == "int" or type(element) == "float"):
            print(result)
            result = result * element
            print("First loop", result)
        if (type(element) == "list"):
            for j in element:
                if (type(j) == "int" or type(j) == "float"):
                    result = result * j
                    print("Second loop", result)

    return result

a = ['Gon', 1, 'Killua', 7, [1,2, [2.0,'HxH'], 3]]
print(multiplyNums(a))

type(element) 永远不会是 "int""float" 等。它将是 intfloat 等。有一个内置的函数,但是,检查调用 isinstance。它的第一个参数是您正在检查的元素,第二个参数可以是类型或类型列表。另外,您没有使用递归。这是更新后的代码:

def multiplyNums(list1):

    result = 1


    for element in list1:
        #print(element)
        if isinstance(element, (int, float)):
            print(result)
            result *= element
            print("First loop", result)
        elif isinstance(element, list):
            result *= multiplyNums(element)
    return result

a = ['Gon', 1, 'Killua', 7, [1,2, [2.0,'HxH'], 3]]
print(multiplyNums(a))

请注意从 if type(...) == ...if isinstance(..., ...) 的变化。同样在 elif isinstance(element, list): 块中,我使用递归而不是您没有考虑嵌套列表的解决方案。此外,x *= yx = x * y 的快捷方式。