首页 > 解决方案 > 我在以下代码中收到“超出时间限制”错误。如何修复该错误

问题描述

以下代码是我检查一个数字的和是否是回文的观点。如果和是回文,则将显示总和。否则将重复该过程,直到我们得到回文。当它被设置为执行时,我得到一个超出时间限制的错误。我需要在哪里更正代码?

def pal(n1):
    temp=n1
    rev=0
    while(temp>0):
        rev=(rev*10)+(temp%10)
        temp=temp/10
    sum1=n1+rev
    temp=sum1
    rev=0
    while(temp>0):
        rev=(rev*10)+(temp%10)
        temp=temp/10
    if(rev==sum1):
        print(sum1)
    else:
        pal(sum1)


n=int(input())
pal(n)

我希望一个数字的输出4536666. IE

标签: python-3.x

解决方案


您的问题是您正在检查while temp > 0:但在该循环内您使用的是浮点除法temp=temp/10。所以条件永远成立。例如:

>>> 8/10
0.8
>>> 0.8/10
0.08

您想要的是将您的部门更改为int 部门

>>> 8//10
0

您仍然可以考虑使用在这种情况下更容易的字符串:

def pal(n):
    rev_n = str(n)[::-1]
    sum_str = str(n + int(rev_n))
    while sum_str != sum_str[::-1]:
        # print(sum_str)
        sum_rev = sum_str[::-1]
        sum_str = str(int(sum_str) + int(sum_rev))
    print(sum_str)

并带有注释打印,这给出了:

>>> pal(453)
807
1515
6666

推荐阅读