Python能否为工程目的提供基于后缀的数字表示法?
作为一名电气工程师,我(或者我们)使用Python来帮助进行计算、自动化等工作。
在处理一些实际数字的计算时,使用-纳(nano)、-皮(pico)、-兆(tera)等单位是非常常见的思维方式。
举个例子:我知道一个1皮法拉(1pF)的电容器,但1e-12法拉的电容器听起来就没那么友好了。而且,输入的时候,1p和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...)
4 个回答
1
pyparsing自带了一些例子,其中有一个简单的表达式解析器,叫做 fourFn.py。我对它进行了修改,增加了大约8行代码,让它可以接受你提到的带后缀的数字,你可以在 这里 找到这个修改版本。这个改动支持了 标准后缀,除了“da”代表1e1,因为我只能使用单个字符,所以我用“D”代替了。
如果你想把这个变成一个互动计算器,可以参考 Steven Siew的提交,并使用我对fourFn.py所做的相同修改。
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
然后在代码中,50皮法(pF)转换成法拉(Farads)就是:
units
50*units.pF
3
当然可以。你只需要自己写一个解析器,然后用Python的语言服务来生成你自己的抽象语法树(AST)。