Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在列表中添加数字_Python_List_Exception Handling - Fatal编程技术网

Python:在列表中添加数字

Python:在列表中添加数字,python,list,exception-handling,Python,List,Exception Handling,问题是遍历列表,计算并返回列表中所有数值的总和 到目前为止我只写了这么多 def main(): my_list = input("Enter a list: ") total(my_list) def total(my_list1): list_sum = 0 try: for number in my_list1: list_sum += number except ValueError:

问题是遍历列表,计算并返回列表中所有数值的总和

到目前为止我只写了这么多

def main():
    my_list = input("Enter a list: ")
    total(my_list)

def total(my_list1):
    list_sum = 0 
    try:
        for number in my_list1:
            list_sum += number
    except ValueError:
         #don't know what to do here

    print list_sum

main()
可以使用以下表达式:

from numbers import Number

a = [1,2,3,'sss']

sum(x for x in a if isinstance(x,Number)) # 6
这将遍历列表,并使用

检查每个元素是否为int/float。如果您选择查看,则可以使用生成器:

>>> a = [1, 2, 3, 'a']
>>> sum(x for x in a if isinstance(x, int))
6

也许试着抓住他

这项工作:

data = [1,2,3,4,5, "hfhf", 6, 4]
result= []
for d in data:   
    try:
        if float(d):
            result.append(d)
    except:
        pass    

print sum(result) #25, it is equal to 1+2+3+4+5+6+4

使用generator可以省去对以下行的需要,但作为一个旁注,当您为此执行类似操作时:

try:
    for number in my_list1:
        list_sum += number
except ValueError:
     #don't know what to do here
在计算字符串时,需要对数字调用float()以强制ValueError。此外,除了之外,您的
后面还需要一些东西,可以是
传递
或打印语句。这样做只会跳出当前循环,而不会继续计数。如前所述,如果只想忽略字符串,使用生成器是一种方法

def main():
    my_list = input("Enter a list: ")
    total(my_list)
    return

def total(my_list1):
    list_sum = 0 
    try:
        for number in my_list1:
            list_sum += float(number)
    except ValueError:
        print "Error"
    return list_sum

if __name__ == "__main__":
    main()

思考
ValueError
何时发生,以及发生时您想做什么(跳过?)。是什么让你决定将for循环放在try/except的内部而不是外部。你不应该以这种方式完全重写你的问题。如果您有任何进一步的信息,请编辑并添加到末尾。请停止删除问题中的内容。我不得不恢复对你所有三个问题的三次编辑。谢谢这很酷:我以前没有见过与模式元组匹配的
isinstance
。你可能真的想在这里使用
isinstance(x,numbers.Complex)
甚至,
numbers.Number
如果name==“main”:main()做什么?看看它做什么。