Python在字符串中添加整数

时间:2015-12-13 02:27:17

标签: python

我得到错误:

>>> sum_digits(123)
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    sum_digits(123)
  File "D:/Python/Final/#4.py", line 4, in sum_digits
    for i in n:
TypeError: 'int' object is not iterable
>>> 
def sum_digits(n):
   s = 0
   for i in n:
      s += n 
return s

4 个答案:

答案 0 :(得分:2)

您需要将数字转换为str(不是int)并重复它:

def sum_digits(n):
   s = 0
   for i in str(n):
      s += int(i)
   return s

用法:

>>> sum_digits(123)
6

使用sumgenerator expression

def sum_digits(n):
    return sum(int(i) for i in str(n))
    # OR  return sum(map(int, str(n)))

答案 1 :(得分:2)

这里的问题是你正在向你的函数传递int,你无法迭代它。

我建议解决方案

>>> n = 123
>>> sum(int(x) for x in str(n))
6

答案 2 :(得分:0)

如果您希望i超出n位数,则需要以下内容:

for i in [int(x) for x in str(n)]:

或者,你可以将"123"代替123传递给sum_digits,你的帖子标题就是你的意思。当然,那么你需要将每个字符转换为它的数值。

答案 3 :(得分:0)

你不能迭代一个int,但你仍然可以在不转换为str的情况下进行迭代:

def sum_digits(n):
    n, i = divmod(n, 10)
    while n:
        n, r = divmod(n, 10)
        i += r
    return i

演示:

In [2]:  sum_digits(123456789)
Out[2]: 45

In [3]:  sum_digits(123)
Out[3]: 6

In [4]:  sum_digits(100)
Out[4]: 1

从int转换为str然后再转换为int没有多大意义。