Проверка размерности комплексной единицы в пинте

#python #units-of-measurement #pint

#python #единицы измерения #pint

Вопрос:

Я пытаюсь проверить размерность сложной единицы измерения, такой как объем (м ^ 3) или скорость (фут / мин). Как я могу использовать метод «pint.check()», чтобы увидеть, соответствует ли величина этому типу измерения?

Это то, что я пробовал:

 import pint
ureg = pint.UnitRegistry()

volume = 4.3 * ureg.gal
  

Выполнение этого имеет смысл:

 volume.dimensionality
Out[3]: <UnitsContainer({'[length]': 3.0})>
  

Итак, я попробовал функцию «проверить», но я не знаю, как это сделать для объема:

 volume.check('[length]', 3)
  

К сожалению, это не работает:

 Traceback (most recent call last):
  File "C:Usersjle...interactiveshell.py", line 3291, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-4722a8cb0b0c>", line 1, in <module>
    volume.check('[length]', 3)
TypeError: check() takes 2 positional arguments but 3 were given
  

Комментарии:

1. Вы пробовали volume.check('[length]') ? Или volume.check(3) ?

2. Я попробовал оба из них, и они оба возвращают False. Я бы ожидал, что проверка (‘[length]’) вернет false, поскольку это не длина length для volume. Вторая опция «volume.check(3)» просто возвращает False, поэтому я даже не уверен, что это делает. Хотя спасибо!

3. О, я понял это. Мне нужно было сделать volume.check('[length]**3') , и это сработало

Ответ №1:

Вы можете проверить объем с помощью check('[volume]') :

 import pint
ureg = pint.UnitRegistry()

volume = 4.3 * ureg.gal

# Returns True
volume.check('[volume]')
  

Вы можете проверить скорость с помощью check('[length]/[time]') :

 velocity = 1 * ureg.feet / ureg.second

# Returns True
velocity.check('[length]/[time]')