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()做什么?看看它做什么。