作为一名电气工程师,我(我们?)使用python来帮助计算/自动化等等。
当使用一些真实世界的数字处理计算时,以 -nano,-pico,-tera 等方式思考是非常常见的。
例如:我知道1pF电容器是什么,但1e-12 F电容器不太友好。此外,它的输入次数增加了4倍( 1p vs 1e-12 )并且更容易出错。不是说在显示数字时,有后缀数字就更容易了。
所以问题是:是否可以在python中使用它(IPython?):
L = 1n
C = 1p
f = 1/(2*pi*sqrt(L*C))
print(f) gives: 5.033G (or whatever the accuracy should be)
它只是一个计算器也非常有用!
感谢。
更新: 我所寻找的不是单位处理,而只是后缀数字处理。所以不要在乎它是法拉或千克,而是关心后缀(-n,-u,-m,-M,-G ......)
答案 0 :(得分:3)
不确定。只需编写自己的解析器并使用Python's language services生成自己的AST。
答案 1 :(得分:3)
您可以创建一个包含所有必要单位作为符号的模块,例如units.py,其中包含类似
的内容pico = 1*e-12
nano = 1*e-9
micro = 1*e-6
mili = 1*e-3
Farad = 1
pF = pico*Farad
nF = nano*Farad
然后在代码中,Farads中的50pF是
units
50*units.pF
答案 2 :(得分:1)
在语言中引入复杂性没有多大意义,可以通过适当的命名和功能简单地解决这些问题:
L_nano = unit_nano(1)
C_pico = unit_pico(1)
f = 1/(2*pi*sqrt(L*C))
print(to_Giga(f)) gives: 5.033G
答案 3 :(得分:1)
pyparsing附带的示例包括一个名为fourFn.py的简单表达式解析器。我修改它以接受带有大约8行附加代码的后缀文字,找到它here。此更改支持standard suffixes,但1e1的“da”除外,因为我仅限于使用单个字符,而是使用“D”代替。
如果您想将其变为交互式计算器,则可以使用我对fourFn.py所做的相同更改来调整Steven Siew's submission。