Python字符串函数中的数字总和

时间:2015-10-30 18:01:53

标签: python

我的功能需要输入一个句子并返回内部数字的总和。有什么建议吗?

def sumOfDigits(sentence):
    sumof=0
    for x in sentence:
        if sentence.isdigit(x)== True:
            sumof+=int(x)
    return sumof

2 个答案:

答案 0 :(得分:2)

替换它:

if sentence.isdigit(x)== True:

为:

if x.isdigit():

的示例:

 >>> "1".isdigit()
 True
 >>> "a".isdigit()
 False

您的代码应该像:

def sumOfDigits(sentence):
    sumof=0
    for x in sentence:
        if x.isdigit():
            sumof+=int(x)
    return sumof

一些pythonic方式:

使用列表理解:

>>> def sumof(sentence):
...     return sum(int(x) for x in sentence if x.isdigit())
... 
>>> sumof("hello123wor6ld")
12

使用过滤器,地图:

>>> def sumof(sentence):
...     return sum(map(int, filter(str.isdigit, sentence)))
... 
>>> sumof("hello123wor6ld")
12

使用正则表达式,提取所有数字:

>>> import re
>>> def sumof(sentence):
...     return sum(map(int, re.findall("\d",sentence)))
... 
>>> sumof("hello123wor6ld")
12

答案 1 :(得分:1)

您必须询问x是否为数字。

def sumOfDigits(sentence):
    sumof=0
    for x in sentence:
        if x.isdigit()== True:
            sumof+=int(x)
    return sumof