其目的是编写一个名为digit_sum的函数,该函数以正整数n作为输入,并返回所有该数字的数字之和。
例如: digit_sum(1234)应该返回10,即1+2+3+ 4。
(假设给出的数字总是正数。)
您的函数在digit_sum(1000)上失败。当它应该返回1时,它返回12。
如果我把dig=[]放在def digit_sum的上面,就会发生"digit_sum(1000)结果是12而不是1“的警报,但是我在本地的notepad+powershell上运行了这个程序,好的,结果是正确的。
之后,我将dig=[]放入第一行函数中,然后它正常工作。
我没拿到2分..。
谢谢你们帮我.
dig=[]
def digit_sum(n):
u=str(n)
for i in u:
dig.append(i)
s=0
for number in dig:
int(number)
s=s+int(number)
return s发布于 2016-06-21 15:54:23
因此,内部和外部之间的区别是locality。当您将dig放在外部时,您将创建一个全局列表。从那以后,你就会不断地附加--名单永远不会被清除!因此,如果我运行digit_sum(1234),我正确地得到10,如果我在运行之后立即运行digit_sum(1000),dig==['1','2','3','4','1','0','0','0'],它将添加所有这些,并导致混乱。
如果您确实在函数中进行了挖掘= [],它将创建一个新的本地列表--它不是每次都会被更改,而是为每个循环创建一个新的空列表。
有时您正确获得它的原因是函数有副作用,所以调用的顺序和调用的历史都很重要。尽量避免函数的副作用--要么不修改列表,要么复制list>alter,如果您想分配新列表,就复制copy>return的副本(或者只使用新列表)。
发布于 2020-08-17 04:07:18
def digit_sum(n):
n = str(n)
total = 0
for i in n:
total += int(i)
return total发布于 2016-06-21 15:49:06
类似于:
def digit_sum(n):
dig=0 # this is the result os the sum
number=str(n) #transform the number into string so we can iterate
for i in range(len(number)):
dig=dig+int(number[i]) #transform the char to int
return dig #return the sum我把数字(例如123)转换成一个字符串,这样我就可以得到字符串的长度(数字的数目)。然后简单地添加它们(在将它们转换为整数之后)并返回结果。
dig=[]意味着您声明了一个数组变量,这不是您想要的。如果它是在函数中声明的,这意味着当函数结束时,变量“消失”,您将无法调用它。它只存在于函数中。如果它在函数之前,则变量存在于程序的末尾。
你的观点不对。您希望用数字填充数组,然后对它们进行加和。实际上,当您为数组dig分配一个数字时,您就是在求和。例如,123将和:1然后是1+2,然后是1+2+3
https://stackoverflow.com/questions/37948737
复制相似问题