此代码将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
但是我还没能把它钉死。如何穷尽地搜索最近(数字线距离)数字回文的正负空间?