检查数字是否在两个数字内的更简洁的方法,如果没有则更改它

时间:2015-02-10 19:45:17

标签: python

我只是好奇是否有比单独检查更好的方法。这不是问题,但我猜测可能有更简洁的方法。

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"

2 个答案:

答案 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))