我无法循环函数中的字符串

时间:2016-10-28 02:09:12

标签: python

我想创建一个函数,它可以将正整数n作为输入,并返回所有该数字的总和。

以下是我的代码:

def digit_sum(n): 
    string = str(n) 
    for number in string: 
        num = int(number) 
        total = 0  
        total += num  
    return total

但错误信息是: 您的函数在digit_sum上失败(434)。当它应该返回11时返回4.

据我所知,for循环没有成功循环。它只循环一次然后返回值。

我的问题是:

  1. 我的代码出了什么问题?

  2. 我需要先将数字转换为字符串的原因是整数不能迭代?

  3. 希望有人能帮助我。 谢谢!

3 个答案:

答案 0 :(得分:2)

问题是你在循环中设置总数等于零。这意味着每次通过它都会采用最新的值o + num,在该字符串的最后一位是4。相反,试试这个:

def digit_sum(n): 
    string = str(n) 
    total = 0 
    for number in string: 
        num = int(number)  
        total += num  
    return total

答案 1 :(得分:0)

问题在于,每次循环迭代时,您都会将total的值重置回0。将初始化移动到循环上方,如此

def digit_sum(n): 
    string = str(n) 
    total = 0 
    for number in string: 
        num = int(number)  
        total += num  
    return total

答案 2 :(得分:0)

您正在重复total每次迭代。将total = 0移到for循环之外。