Python 求回文数的代码

Python code that finds the number of palindromes

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

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

我相信你的意思是回文 - 倒着读的单词和正常的一样。

我们可以像这样检查一个字符串是否是回文:

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)

此代码应该有效:

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 或任何将用作过滤器的函数。请注意,该函数将 return 满足函数中定义的要求的最低回文。

示例过滤器函数:

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

总结:

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