我有一个Python脚本,它产生以下输出:
31.7
31.71
31.72
31.73
31.74
31.75
31.76
31.77
31.78
31.79
31.8
31.81
31.82
31.83
31.84
31.85
31.86
31.87
31.88
31.89
31.9
31.91
请注意数字31.7
,31.8
,31.9
。
我的脚本的目的是确定数字回文,例如1.01
。
脚本的问题(在下面重现)是它会将1.1
等数字回文评估为有效 - 但是 - 即在这种情况下,不被视为有效输出。
有效输出需要具有完全两个小数位。
如何强制数字输出至少有两个尾随小数位,包括尾随零?
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])
operand = float(sys.argv[2])
candidrome = trial + (trial * 0.15)
print(candidrome)
candidrome = round(candidrome, 2)
# check whether we have a Palindrome
while not isPalindrome(candidrome):
candidrome = candidrome + (0.01 * operand)
candidrome = round(candidrome, 2)
print(candidrome)
if isPalindrome(candidrome):
print( "It's a Palindrome! " + str(candidrome) )
答案 0 :(得分:1)
尝试使用此代替str(x)
:
twodec = '{:.2f}'.format(x)
答案 1 :(得分:1)
您可以使用内置format
功能。 .2
表示位数,f
表示&#34; float&#34;。
if isPalindrome(candidrome):
print("It's a Palindrome! " + format(candidrome, '.2f'))
或者:
if isPalindrome(candidrome):
print("It's a Palindrome! %.2f" % candidrome)
答案 2 :(得分:0)
你可以试试这个:
data = """
1.7
31.71
31.72
31.73
"""
new_data = data.split('\n')
palindromes = [i for i in new_data if len(i) > 3 and i.replace('.', '') == i.replace('.', '')[::-1]]
答案 3 :(得分:0)
x = ("%.2f" % x).replace('.','')