查找回文数的Python代码

2024-06-02 06:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我很困惑,我不知道我应该建立什么样的方程式。除了1之外,我想不出任何东西能满足这个条件。你能给我一些关于如何写这段代码的指导吗

例如,让我输入3作为数字n。从((2^n)-1)得出=7。我需要找到一个7位数的回文数字,比如1670761


2条回答

此代码应适用于:

def len_x_palimdrome(x,f,start = ""):
    #f - a callable object taking one input and returning a bool
    nums = "0123456789"
    for i in nums:
        if x == 1:
            if f(int(start+i+start)):
                return(i)
        elif x == 2:
            if f(int(start+i*2+start)):
                return(i*2)
        else:
            a = len_x_palimdrome(x-2,f)
            if a != None:
                return(i+a+i)
    return(None)

该函数接受长度和函数lambda或将用作过滤器的任何内容。请注意,函数将返回满足函数中定义的要求的最低回文

示例过滤器功能:

def f(n):
    if n == 0:
        return False
    return n%7 == 0

总之:

print(len_x_palimdrome(2**3-1,f))

我相信你指的是回文——倒读的单词和平常一样

我们可以检查字符串是否是回文,如下所示:

def is_palindrome(string):
    return(string == string[::-1])

然后我们可以循环一个范围内的所有n-s,并检查如下:

for n in range(1000):
    if is_palindrome(str(2**n-1)):print(n,2**n-1)

相关问题 更多 >