簡體   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