繁体   English   中英

接受 1 个可迭代参数并添加列表中的所有对象(如果它们是 int 或 float)的函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM