我只是好奇是否有比单独检查更好的方法。这不是问题,但我猜测可能有更简洁的方法。
inputNumber = 1.2
if ( type( inputNumber ) == float or type( inputNumber ) == int ) or str( inputNumber ).isdigit():
number = float( inputNumber )
if not 0 < number < 1:
print "Number must be between 0 and 1, changing it to fit within the limits"
if number > 1:
number = 1.0
elif number < 0:
number = 0.0
else:
print "Invalid input"
答案 0 :(得分:3)
您不应该检查类型。只是尝试转换并处理可能发生的任何异常:
try:
number = float(inputNumber)
except ValueError:
print("could not convert to float")
检查数字是否在您想要的范围内已经是pythonic了。要将数字约束到给定范围,可以使用
number = min(1, max(0, number))
但有人可以说,如果这比你的方法更具可读性。
答案 1 :(得分:1)
好吧,你可以使用numbers
:
from numbers import Number
from warnings import warn # prints to STDERR instead of STDOUT
input_number = 1.2
if not isinstance(input_number, Number):
warn("Number must be between 0 and 1, changing it to fit within the limits")
input_number = min(1.0, max(0.0, float(input_number))