本文將介紹如何用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-tw/n/374430.html
微信掃一掃
支付寶掃一掃