Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 使用类型(int)对字符串的数字求和_Python - Fatal编程技术网

Python 使用类型(int)对字符串的数字求和

Python 使用类型(int)对字符串的数字求和,python,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

我在谷歌搜索时看到过这个问题,但我尝试了其他方法来运行这个失败的程序,请帮助我找出我的方法错误的原因

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'); 
此方法返回零。为什么?

“2”
仍然是字符串,而不是整数:

>>> type("2")
<class 'str'>
>>> type(2)
<class 'int'>
然后,您需要将“数字”转换为实际整数,然后才能添加它们:

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

i.isdigit()
当您迭代一个字符串时,您也会得到一个字符串,您需要检查给定的字符是否是数字


第二,字符串变量未定义,应使用s。

首先,字符串应设置为s。接下来,类型将始终是一个包含上述内容的字符串。尝试改用ascii值

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

5

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

您应该会得到
namererror
,因为局部变量
string
未定义。此外,Python语句的结尾不需要分号。请使用
a=a+int(i)
。然后它将返回5您想要数字的计数(如您使用的
a=a+1
所示,还是数字的总和(如函数名称所示)?您是否考虑过在某个地方添加
打印类型(i)
?您可以删除不必要的列表理解,然后您的解决方案与我的相同…)最好在此处添加一条注释,即如果数字是分数,则它将不起作用。
ab2.5sd0.5f
-这将给出12,而不是3。如果数字是分数,则需要使用浮点
5