簡體   English   中英

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])

然后我們可以遍歷一個范圍內的所有 ns 並像這樣檢查:

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)

function 接收長度和 function lambda 或任何將用作過濾器的東西。 請注意,function 將返回滿足 function 中定義的要求的最低回文。

過濾器示例 function:

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

綜上所述:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM