在Python

时间:2017-09-23 01:08:53

标签: python floating-point palindrome

此代码将float作为输入,例如1.01之类的数字,然后将其乘以常量。

随后,它寻找最接近该数字的数字回文。

然而

此时它只搜索一个方向,它只增加数字 - 我试图做的是让它同时向正方向和负方向搜索((或至少快速连续)。

查看它现在的工作方式,可能有点天真:

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 = float(sys.argv[1])

    candidrome = trial + (trial * 0.15)

    print(candidrome)
    candidrome = round(candidrome, 2)


    # check whether we have a Palindrome
    while not isPalindrome(candidrome):
        candidrome += 0.01
        candidrome = round(candidrome, 2)
        print(candidrome)

    if isPalindrome(candidrome):
        print( "It's a Palindrome! " + str(candidrome) )

我一直在尝试将这些功能插入到我的循环中:

def incrementer(candidrome):
    candidrome += 0.01
    candidrome = round(candidrome, 2)
    return candidrome

def decrementer(candidrome):
    candidrome -= 0.01
    candidrome = round(candidrome, 2)
    return candidrome

但是我还没能把它钉死。如何穷尽地搜索最近(数字线距离)数字回文的正负空间?

0 个答案:

没有答案