假设我们确信所有的字符串都是一个数字的某种表示形式。foo函数返回我们传入的字符串的数字值。我还想检查数字的传递字符串表示形式是整数还是浮点数。不过,我不确定这是否是最优雅的做法。有没有更简单/更清洁的方法?
def foo(arg):
if arg.endswith('.00'):
arg3 = arg3[:-3]
try:
arg3 = int(arg3)
except:
arg3 = float(arg3)
return arg
arg1 = '3456.26'
arg2 = '100.00'
num1 = foo(arg1)
num2 = foo(arg2)发布于 2015-08-25 11:03:54
浮点数有一个 method,它告诉您它们是否等于整数:
>>> (1.23).is_integer()
False
>>> (1.0).is_integer()
True因此,您可以使用它来编写如下内容:
def to_number(s):
"""Converts a string to a number."""
f = float(s)
return int(f) if f.is_integer() else f>>> for x in ('1.23', '123', '1.00', 'foo'):
print x, to_number(x)
1.23 1.23
123 123
1.00 1
foo
Traceback (most recent call last):
File "<pyshell#11>", line 2, in <module>
print x, to_number(x)
File "<pyshell#8>", line 5, in to_number
f = float(s)
ValueError: could not convert string to float: foohttps://stackoverflow.com/questions/32202275
复制相似问题