Python 超出错误时间限制添加数字
我用迭代的方法把一个数的所有数字相加,直到和成为一个单位数。我的代码是:Python 超出错误时间限制添加数字,python,Python,我用迭代的方法把一个数的所有数字相加,直到和成为一个单位数。我的代码是: def addDigits(self, num): self.x=num a=[] sum=0 count=0 count1=0 p=0 while((self.x)/10>0): while(self.x>0): self.x=self.x/10 count=count+1
def addDigits(self, num):
self.x=num
a=[]
sum=0
count=0
count1=0
p=0
while((self.x)/10>0):
while(self.x>0):
self.x=self.x/10
count=count+1
self.x=num
while(count>0):
if(count==1):
self.x=self.x%10
sum=sum+self.x
else:
self.x=self.x/(10**(count-1))
sum=sum+self.x
self.x=num
self.x=self.x%(10**(count-1))
count=count-1
self.x=sum
num=self.x
return self.x
我在sum>10的输入中遇到超时错误。请建议一些解决此问题的方法,以便正确的输出可以在那里出现。我简化了算法:这里有两个实现(分别有1个和2个嵌套循环):
def addDigits(self,num):
aux=num
总和=0
当aux>9时:
总和=总和+辅助%10
辅助=辅助/10
如果是辅助9:
总和=总和+辅助%10
辅助=辅助/10
总和=总和+辅助
aux=总和
总和=0
如果它忘了在enduse处添加sum=0,只使用这个语句来保持简单的self.x=self.x/10,self.x将永远不会等于或小于零(假设您使用的是Python 3x),它将非常非常小,因此您有一个无限循环。我建议你在循环中添加一个计数器,打印self.x和计数器,然后在计数器达到某个合理的数字后退出循环,比如100来测试这个。嗨,你在这里找到答案了吗?
def addDigits(self, num):
aux = num
sum = 0
while aux > 9:
sum = sum + aux % 10
aux = aux / 10
if aux <= 9:
sum = sum + aux
aux = sum
sum = 0
return aux
def addDigits(self, num):
aux = num
sum = 0
while True:
while aux > 9:
sum = sum + aux % 10
aux = aux / 10
sum = sum + aux
aux = sum
sum = 0
if aux <= 9:
break
return aux