我的想法是接受一个数字作为输入,也许1.00
然后将它乘以一个常数。
随后,它被传递给一个函数,该函数确定它是否是有效的回文结构。
如果不是,则数量将逐渐增加,直到达到有效的回文 - 但是,我想将探索空间限制在第二个小数位。
也就是说1.01
是有效输出,但1.001
不是。
下面的代码执行上述过程,但需要注意的是当前输出通常是无效的,溢出到较小的小数空间,即1.00001
,依此类推。
如何将操作的小数位数限制为两个?
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)
# check whether we have a Palindrome
while not isPalindrome(candidrome):
candidrome += 0.01
if isPalindrome(candidrome):
print( "It's a Palindrome! " + str(candidrome) )
建议的解决方案here似乎不起作用:
# check whether we have a Palindrome
while not isPalindrome(format(round(candidrome,2))):
candidrome += 0.01
答案 0 :(得分:0)
得到这样的话:
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) )