[英]Function that takes 1 iterable parameter and adds all objects in the list if they are int or float?
我需要创建一个函数,该函数接受一个可迭代参数并添加列表中的所有对象(如果它们是 int 或 float)。 应该跳过不是 int 或 float 的对象,并且应该返回 int 和 float 的总和。 我需要使用循环和 isinstance 函数。 如果有输入 [5.3, 2, "Book", True],则返回浮点对象应等于 7.3。 到目前为止,我有:
def add_numbers_in_list(number_list):
for x in number_list:
try:
yield float(x)
except ValueError:
pass
number_list = [5.3, 2, "Book", True]
print(sum(add_numbers_in_list(number_list)))
我得到 8.3 作为答案。
这是因为float(True)
等于1
。 要修复您的代码,您可以执行以下操作:
def add_numbers_in_list(number_list):
for x in number_list:
if type(x) in [float, int]: # Change over here
yield float(x)
number_list = [5.3, 2, "Book", True]
print(sum(add_numbers_in_list(number_list)))
如果您想存储计数并返回它,您可以使用以下脚本:
def add_numbers_in_list(number_list):
count = 0
for x in number_list:
if type(x) in [float, int]:
count += float(x)
return count
number_list = [5.3, 2, "Book", True]
print(add_numbers_in_list(number_list))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.