Python codecademy digit_sum

时间:2016-07-01 03:22:55

标签: python

该任务已在讨论中 codecademy Practice Makes Perfect digit_sum

您需要将正数的数字相加。 我使用字符串方式来决定任务(而不是地板划分)。

我的代码是

def digit_sum (n):
    total = 0
    for digit in range(len(str(n))):
        total += int(n[digit])
    return total

number = raw_input("Please print a long number: ")    
print digit_sum(number)

它可以正常使用1001以及434。

然而,该计划说: 你的digit_sum函数是否只取一个参数(一个正整数)?你的代码扔了一个"' int'对象没有属性' getitem '"错误。

代码工作时可能出现什么问题?

谢谢!

2 个答案:

答案 0 :(得分:1)

你没有将n转换成字符串,所以当你调用n [i]时它会引发异常

def digit_sum(n):
    return sum(  int(i) for i in str(n) ) 

答案 1 :(得分:0)

Evert,Jerzyk,Galaxian,感谢您的评论。谢谢你,我看到了它:我只在一个地方(第3行)将n转换为str,并认为这已经足够,因为第4行是在for循环中。我编写了代码

def digit_sum (n):
    total = 0
    n = str(n)
    for digit in range(len(n)):
        total += int(n[digit])
    return total

number = int(raw_input("Please print a long number: "))    
print digit_sum(number)

现在它有效!

Galaxian,ShadowRanger,感谢您的短代码,我试过了,它很好! 我还没有抓住这种简短的编码方式。顺便说一句,我搜索了有关地图功能的信息,发现了这个:explanation on zip, map, lyambda