本文將介紹如何用Python編寫程序查找迴文數。迴文數是指正序和倒序都是一樣的數,比如121和1221。我們將從什麼是迴文數開始介紹,然後深入講解兩種方法來判斷一個數是否是迴文數,最後給出完整的Python代碼。
一、什麼是迴文數?
迴文數是指從左向右和從右向左讀都是一樣的數,比如121和1221。迴文數常常被用於密碼學、圖像處理和數據存儲等領域。
二、方法一:字符串反轉
一種簡單有效的方法是將數值轉換為字符串,再通過字符串切片反轉字符串,最後比較反轉前後兩個字符串是否相同。
def is_palindrome_1(num): return str(num) == str(num)[::-1]
在上面的代碼中,我們首先將數字轉換為字符串,然後使用Python字符串的反轉切片特性,將數字顛倒過來。最後,我們只需比較原字符串和反轉後的字符串是否相同即可。
三、方法二:遞歸實現
另一種常見的方法是使用遞歸算法。遞歸的思想是將問題分解成更小的子問題,直到問題變得簡單並可以立即得到解決為止。在判斷是否是迴文數的問題中,我們可以遞歸地比較首尾兩個數字是否相同,不斷將比較範圍縮小,直到判斷整個數字是迴文數或不是迴文數。
def is_palindrome_2(num): if num < 0: num = -num if num < 10: return True highd = 1 while num / highd >= 10: highd *= 10 if num // highd != num % 10: return False num = (num % highd) // 10 return is_palindrome_2(num)
在上面的代碼中,我們首先對負數進行了處理,然後通過循環計算出最高位數,比較最高位數和最低位數是否相同,如果相同,將數字範圍縮小後遞歸執行函數,直到判斷數字是迴文數或不是迴文數。
四、完整代碼
def is_palindrome_1(num): return str(num) == str(num)[::-1] def is_palindrome_2(num): if num < 0: num = -num if num < 10: return True highd = 1 while num / highd >= 10: highd *= 10 if num // highd != num % 10: return False num = (num % highd) // 10 return is_palindrome_2(num) if __name__ == '__main__': num = int(input("請輸入一個數字:")) if is_palindrome_1(num): print("%d是迴文數" % num) else: print("%d不是迴文數" % num) if is_palindrome_2(num): print("%d是迴文數" % num) else: print("%d不是迴文數" % num)
在我們的完整代碼中,我們首先定義了兩個函數is_palindrome_1和is_palindrome_2,分別用於判斷一個數字是否是迴文數。然後在主函數中,我們先通過鍵盤輸入讀入一個數字,接着依次調用is_palindrome_1和is_palindrome_2函數進行判斷,並打印出結果。
原創文章,作者:MSPXS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/374430.html