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