使用type(int)对字符串的数字求和

时间:2014-11-02 06:26:57

标签: python

当我用谷歌搜索时,我已经看到了这个问题,但我尝试了其他一些操作此程序失败了,帮我弄清楚为什么我的方法错了。

def sumDigits(s): 
      """Assumes s is string. If s is 'a2b3dc' it return 5""" 
      a=0
      for i in string: 
            if type(i) == int: 
                    a=a+1
      return a

sumDigits('ab23sdf'); 

这个方法让我归零。为什么?

4 个答案:

答案 0 :(得分:0)

"2"仍然是一个字符串,而不是整数:

>>> type("2")
<class 'str'>
>>> type(2)
<class 'int'>

改为使用isdigit()

>>> "2".isdigit()
True

然后,您需要将“数字”转换为实际整数,然后才能添加它们:

def sumdigits(s):
    return sum(int(c) for c in s if c.isdigit())

答案 1 :(得分:0)

请改用isdigit。

i.isdigit()

当你迭代一个字符串时你也得到一个字符串,你需要检查给定的字符是否是一个数字。

其次字符串变量未定义,您应该使用s代替。

答案 2 :(得分:0)

首先,字符串应设置为s。接下来,类型总是与上面的字符串。请尝试使用ascii值。

答案 3 :(得分:0)

sum(int(x) for x in 'ab23sdf' if x.isdigit())

输出:

5

我正在使用isdigit检查x是否为数字,int(x)将x转换为整数。 sum函数将给出数字的总和。如果数字在分数

,请将int替换为float