這篇文章主要介紹“如何利用Python判斷整數(shù)是否是回文數(shù)”,在日常操作中,相信很多人在如何利用Python判斷整數(shù)是否是回文數(shù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何利用Python判斷整數(shù)是否是回文數(shù)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為什邡企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,什邡網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
原理: 用一個while循環(huán),將一個數(shù)每次都取出首位和末位,判斷是否相等,只要有一次不相等退出即可。
回文數(shù)的判斷條件:加入一個變量位數(shù),如果這個數(shù)是奇數(shù),位數(shù)為1時(shí),即最中間那一位數(shù),此時(shí)退出即可,同理,偶數(shù),位數(shù)為0時(shí),退出。
問題:
如何判斷位數(shù)
如何逐位取值
優(yōu)點(diǎn): 思路簡單
解決:
判斷位數(shù)下面程序即可
y=x weishu=0 while x: weishu+=1 x=x//10
先將判斷的x賦值給y,當(dāng)x不為0時(shí),表明現(xiàn)在x還有位數(shù),位數(shù)+1,x/10減少一位,但要記住,用地板除(//)直接得到int整數(shù),否則用/會出現(xiàn)浮點(diǎn)數(shù)
逐位取值:
a=y//(10**(weishu-1)) b=y%10 if a!=b: print("不是回文數(shù)。") break weishu-=2 y=y//10 y=y%(10**weishu)
取得首位只要地板除以相應(yīng)的位數(shù),把首位后面的數(shù)舍去,比如一個五位數(shù),地板除10000(10的4次方,所以是位數(shù)-1),就會得到首位,末尾比較簡單,只要對10取模得到余數(shù)就是各位,a是首位,b是末位。
判斷首尾相等后,先將位數(shù)-2,然后將首尾的數(shù)字都給刪掉,刪掉末位//10即可,刪掉首位:如果是五位數(shù),現(xiàn)在刪掉末位后是四位數(shù),地板與1000取模即可
然后是判斷如何判斷退出循環(huán)
如上文,判斷位數(shù)最后的值即可
最后判斷負(fù)數(shù)和個位數(shù)即可
實(shí)現(xiàn)代碼如下:
x=int(input("請輸入一個整數(shù):")) if x<0: print("不是回文數(shù)。") elif not x//10: print("是回文數(shù)。") else: y=x weishu=0 while x: weishu+=1 x=x//10 while True: a=y//(10**(weishu-1)) b=y%10 if a!=b: print("不是回文數(shù)。") break weishu-=2 if weishu==1: print("是回文數(shù)。") break if not weishu: print("是回文數(shù)。") break y=y//10 y=y%(10**weishu)
原理: 每一個回文數(shù)從中間切開前后都是相等的,所以得到一個回文數(shù)后面的數(shù)與前面的數(shù)比較即可
那么問題來了,如果是奇位數(shù),怎么判斷?
解決: 只要最后得到的前面的數(shù)或者后面的數(shù)除去末位數(shù)與另一個相等即可,因?yàn)槠嫖粩?shù)中間的數(shù)不用管,其他的數(shù)相等就可以,所以刪去末位判斷是否相等
難點(diǎn): 如何得到后面的數(shù)?
每次將后面的數(shù)乘上10,然后加上前面數(shù)的末位,前面的數(shù)地板除10消除末位即可
如何判斷后面的數(shù)已經(jīng)取好了,即退出循環(huán)的判斷條件是:
就是當(dāng)后面的數(shù)已經(jīng)大于等于前面的數(shù)就可以退出循環(huán)了
優(yōu)點(diǎn): 代碼簡單
實(shí)現(xiàn)程序如下:
hou=0 while(x>hou): hou=hou*10+x%10 x//=10 if x==hou or x==(hou//10): print("是回文數(shù)。") else: print("不是回文數(shù)。")
最后判斷負(fù)數(shù)和末位是0但不是0的數(shù),他們一定不是回文數(shù),因?yàn)殚_頭不能是0
個位數(shù)此程序能夠判斷,后面的數(shù)就是此個位數(shù),地板除10之后和前面一樣都是10,即回文數(shù)
最終程序:
x=int(input("請輸入一個整數(shù):")) if x<0 or(x%10==0 and x!=0): print("不是回文數(shù)。") elif not x//10: print("不是回文數(shù)。") else: hou=0 while(x>hou): hou=hou*10+x%10 x//=10 if x==hou or x==(hou//10): print("是回文數(shù)。") else: print("不是回文數(shù)。")
原理: 字符串其實(shí)是序列,我們只要將字符串倒過來判斷是否和原字符串相等就可以了
反轉(zhuǎn)可以用x[::-1]
實(shí)現(xiàn)代碼如下
x=input("請輸入一個整數(shù):") if x==x[::-1]: print("是回文數(shù)。") else: print("不是回文數(shù)。")
要是你說還能不能更高級一點(diǎn),還可以用條件表達(dá)式這樣寫
x=input("請輸入一個整數(shù):") print("是回文數(shù)。") if x==x[::-1] else print("不是回文數(shù)。")
但是如果他給你一個09890也會報(bào)錯,具體解決可以先轉(zhuǎn)化為int,再轉(zhuǎn)化為str
最終成品:
x=int(input("請輸入一個正整數(shù):")) x=str(x) print("是回文數(shù)。") if x==x[::-1] else print("不是回文數(shù)。")
到此,關(guān)于“如何利用Python判斷整數(shù)是否是回文數(shù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
分享名稱:如何利用Python判斷整數(shù)是否是回文數(shù)
鏈接地址:http://jinyejixie.com/article36/pgigsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、微信公眾號、Google、虛擬主機(jī)、營銷型網(wǎng)站建設(shè)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)