繁体   English   中英

使用Python评估数字回文数对浮点数的有效性的函数

[英]Function to evaluate validity of numerical palindrome for floating point numbers using Python

因此,有很多算法可以评估int是否是回文,即

def ReverseNumber(n, partial=0):
    if n == 0:
        return partial
    return ReverseNumber(n // 10, partial * 10 + n % 10)

或这一个:

def isPalindrome(x):
    if (x < 0):
        return False
    div = 1
    while (x / div >= 10):
        div *= 10
    while (x != 0):
        l = x / div
        r = x % 10
        if (l != r):
            return False
        x = (x % div) / 10
        div /= 100
    return True

但是我想做的是评估一个数字(例如1.01还是22.22等),这些数字本身是否是回文。

除了ints之外,上述那些算法中的任何一种如何适应floats运算?

这是我用来调用它的代码:

import sys

# This method determines whether or not the number is a Palindrome
def isPalindrome(x):
    x = str(x).replace('.','')
    a, z = 0, len(x) - 1
    while a < z:
        if x[a] != x[z]:
            return False
        a += 1
        z -= 1
    return True

if '__main__' == __name__:

    trial = int(sys.argv[1])

    # check whether we have a Palindrome
    if isPalindrome(trial):
        print("It's a Palindrome!")

最简单的方法是将数字转换为字符串,然后从两端到中间比较字符。 字符串转换比重复的乘法和除法便宜。

def isPalindrome(x):
    x = str(x).replace('.','')
    a, z = 0, len(x) - 1
    while a < z:
        if x[a] != x[z]:
            return False
        a += 1
        z -= 1
    return True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM