python 回数判断

回数:从左往右读和从右往左读是一样的数。

判断方法有多种,可以先反转出从右到左的数字进行比较,也可以转成字符串进行字符比较等等,以下是相关总结。

一、使用数学方法计算反转之后的数字,进行对比

def is_palindrome(n):
    if n < 0:
        return False
    temp_n = n
    num = 0  #num反转之后的数字
    while temp_n > 0:
        num = num * 10 + temp_n % 10
        temp_n = temp_n // 10
        print(temp_n)
    return num == n

注意:在while循环体中,temp_n = temp_n // 10 使用的是python的地板除 '//',确保得到整数。

python的整数运算永远是精确的,包括除法'/',两个整数做除法,即使整除结果仍然是浮点数,而地板除'//',确保两个整数相除结果是整数。举个例子,输入686,做除法,686/10 = 68.6,而地板除除法,686//10 = 68。

二、转换成字符串进行对比

def is_palindrome_slice(num):
    if num < 0:
        return False

    str_num = str(num)
    new_num = str_num[len(str_num)-1::-1]
    return str_num == new_num

首先,先将数字转换成字符串,得到str_num,对字符串进行切片,得到从右到左的字符串new_num,再进行比对。

当然,转换成字符串之后,可以将字符串对半分,如果是回数,两边是对称的,对半分之后进行字符比较,代码如下:

def is_palindrome_slice(num):
    if num < 0:
        return False

    str_num = str(num)
    lens = len(str_num)

    if lens % 2 == 1:
        x = (lens+1)//2
    else:
        x = lens//2

    return str_num[:x] == str_num[lens-1:lens-1-x:-1]

注意,在判断里面,用地板除,确保是整数,切片下标必须是整数。

以上整数转字符串的方法最终都使用了切片的形式进行比较,那有没有可以不用到切片的呢,当然有,可以跟第一种方法数字反转一样,将转换后的字符串进行反转然后比较,代码如下:

def is_palindrome_reverse(num):
    if num < 0:
        return False

    str_num = str(num)
    new_num = ''

    for i in str_num:
        new_num = i + new_num

    return str_num == new_num

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值