#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]')