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))
我很迷茫,不知道应该做什么样的方程式。除了 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))