6

作为一名电气工程师,我(我们?)使用 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 ...)

4

4 回答 4

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

然后在代码中,法拉的 50pF 是

units
50*units.pF
于 2011-03-19T09:12:27.257 回答
3

当然。只需编写您自己的解析器并使用Python 的语言服务生成您自己的 AST 。

于 2011-03-19T08:50:44.663 回答
1

pyparsing 附带的示例包括一个简单的表达式解析器,称为fourFn.py。我对其进行了调整,以接受带有大约 8 行附加代码的后缀文字,请在此处找到。此更改支持标准后缀,但 1e1 的“da”除外,因为我仅限于使用单个字符,因此我使用了“D”。

如果你想把它变成一个交互式计算器,你可以使用我对fourFn.py 所做的相同更改来调整Steven Siew 的提交。

于 2011-03-19T17:50:56.940 回答
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 
于 2011-03-19T08:53:57.927 回答