该任务已在讨论中 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 '"错误。
代码工作时可能出现什么问题?
谢谢!
答案 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