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