利用Python判斷整數是否是回文數的3種方法總結

2022-09-25 09:15:11 字數 2718 閱讀 2806

所謂回文數,就是說乙個數字從左邊讀和從右邊讀的結果是一模一樣的,比如12321。本文通過三個方法詳細介紹了判斷的方法,下面來一起看看吧

原理: 用乙個while迴圈,將乙個數每次都取出首位和末位,判斷是否相等,只要有一次不相等退出即可。

回文數的判斷條件:加入乙個變數位數,如果這個數是奇數,位數為1時,即最中間那一位數,此時退出即可,同理,偶數,位數為0時,退出。

問題:

優點: 思路簡單

解決:判斷位數下面程式即可

y=xweishu=0

while x:

weishu+=1

x=x//10

先將判斷的x賦值給y,當x不為0時,表明現在x還有位數,位數+1,x/10減少一位,但要記住,用地板除(//)直接得到int整數,否則用/會出現浮點數

逐位取值:

a=y//(10**(weishu-1))

b=y%10

if a!=b:

print("不是回文數。")

break

weishu-=2

y=y//10

y=y%(10**weishu)

取得首位只要地板除以相應的位數,把首位後面的數捨去,比如乙個五位數,地板除10000(10的4次方,所以是位數-1),就會得到首位,末尾hzsnj比較簡單,只要對10取模得到餘數就是各位,a是首位,b是末位。

判斷首尾相等後,先將位數-2,然後將首尾的數字都給刪掉,刪掉末位//10即可,刪掉首位:如果是五位數,現在刪掉末位後是四位數,地板與1000取模即可

然後是判斷如何判斷退出迴圈

如上文,判斷位數最後的值即可

最後判斷負數和個位數即可

實現**如下:

x=int(input("請輸入乙個整數:"))

if x<0:

print("不是回文數。")

elif not x//10:

print("是回文數。")

else:

y=xweishu=0

while x:

weishu+=1

x=x//10

while true:

a=y//(10**(weishu-1))

b=y%10

if a!=b:

print("不是回文數。")

break

weishu-=2

if weishu==1:

print("是回文數。")

break

if not weishu:

print("是回文數。")

break

y=y//10

y=y%(10**weishu)

原理: 每乙個回文數從中間切開前後都是相等的,所以得到乙個回文數後面的數與前面的數比較即可

那麼問題來了,如果是奇位數,怎麼判斷?

解決: 只要最後得到的前面的數或者後面的數除去末位數與另乙個相等即可,因為奇位數中間的數不用管,其他的數相等就可以,所以刪去末位判斷是否相等

難點: 如何得到後面的數?

每次將後面的數乘上10,然後加上前面數的末位,前面的數地板除10消除末位即可

如何判斷程式設計客棧後面的數已經取好了,即退出迴圈的判斷條件是:

就是當後面的數已經大於等於前面的數就可以退出迴圈了

優點: **簡單

實現程式如下:

hou=0

while(x>hou):

hou=hou*10+x%10

x//=10

if x==hou or x==(hou//10):

print("是回文數。")

else:

print("不是回文數。")

最後判斷負數和末位是0但不是0的數,他們一定不是回文數,因為開頭不能是0

個位數此程式能夠判斷,後面的數就是此個位數,地板除10之後和前面一樣都是10,即回文數

最終程式:

x=int(input("請輸入乙個整數:"))

if x<0 or(x%10==0 and x!=0):

print("不是回文數。")

elif not x//10:

print("不是回文數。")

else:

hou=0

while(x>hou):

hou=hou*10+x%10

www.cppcns.comx//=10

if x==hou or x==(hou//10):

print("是回文數。")

else:

print("不是回文數。")

原理: 字串其實是序列,我們只要將字串倒過來判斷是否和原字串相等就可以了

反轉可以用x[::-1]

實現**如下

x=input("請輸入乙個整數:")

if x==x[::-1]:

print("是回文數。")

else:

print("不是回文數。")

要是你說還能不能更高階一點,還可以用條件表示式這樣寫

x=input("請輸入乙個整數:")

print("是回文數。") if x==x[::-1] else print("不是回文數。")

但是如果他給你乙個09890也會報錯,具體解決可以先轉化為int,再轉化為str

最終成品:

x=int(input("請輸入乙個正整數:"))

x=str(x)

print("是回文數。") if x==x[::-1] else print("不是回文數。")

如何判斷字串是否是整數 (python)

題目描述 寫乙個方法,檢查字串是否為整數,那麼返回整數值。分析與解答 整數分為負數和非負數,負數只有一種表示方法,而非負數可以有兩種表示方法。例如111,111,111,因此在判斷字串是否為整數的時候,需要把這幾個問題都考慮到。下面說兩個方法,方法一 遞迴法 對於整數而言,例如111,可以看成11 ...

python判斷是否是素數

在python中實現 取出某個數值區間範圍內的所有素數 prime 素數定義為 對於乙個正整數n,如果除了1和它本身,它再不能被任何正整數整除,則它是素數 質數 定義2是最小的素數 import math import time def is prime num return 0 not in nu...

python判斷乙個整數是否是回文數

判斷乙個整數是否是回文數 整數不含前導零 思路 將整數翻轉後判斷是否與原整數相等 簡單的翻轉方法用到切片 slice 將整數強制轉換為字串,用切片 1 翻轉後比較 coding utf 8 def is palindrome n n str n m int n 1 n int n return n ...