如何用python判断一个正整数是否是回文数
直接转换为字符串用字符串方法判断
分离个十百千…位出来进行判断(分离个十百千位的方法,比如有时需要取出456的百位4,十位5,个位6等)
1.字符串判断方法
def isPalindrome(num):
strs=str(num) #将数字转换为字符串
if strs==strs[::-1]: #将字符串颠倒,如'abn'颠倒为‘nba’
return 'This number is a palindrome number'
else:
return 'This number is not a palindrome number'
isPalindrome(12345654321)
2.分离出各个数字使用算法进行判断
def isPalindrome(num):
if num <0:
return False
if type(num) !=int:
return 'please input a number(int)' #如果输入不是整数,则返回要求输入整数,非整数一定不是回文数
x=num
r=1 #num的位数统计,个位数,10位数还是百位数
while x/r>=10:
r*=10 #如x=1234,则r=1000,千位数
while r>1:
left,x=divmod(x,r) #divmod()函数,得到商和余数,如1234,就得到1和234
x,right=divmod(x,10)#x经过两次divmod(),1234 变为了23,变为了十位数,所以在最后r//100
if right!=left: #一旦左右两边有不相等的,则该数不是回文,返回False
return False
r//=100
return True
isPalindrome(1011)
3.简单分离个十百千位并将它们按个十百千…的顺序放到列表中
def numsplit(num): #分离数字
List=[]
while num:
num,left=divmod(num,10)
List.append(left)
return List
def numrecover(List): #组合数字
num=0
for i in range(len(List)):
num+=List[i]*10**i
return num
4.当然也可以直接进行根据所取的位数进行取余%,取商//等操作