为什么我没有得到 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"
等。它将是 int
、float
等。有一个内置的函数,但是,检查调用 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 *= y
是 x = x * y
的快捷方式。
这是我的代码:
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"
等。它将是 int
、float
等。有一个内置的函数,但是,检查调用 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 *= y
是 x = x * y
的快捷方式。