当我用谷歌搜索时,我已经看到了这个问题,但我尝试了其他一些操作此程序失败了,帮我弄清楚为什么我的方法错了。
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');
这个方法让我归零。为什么?
答案 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