6

電気技師として、私 (私たち?) は、計算/自動化などを支援するために python を使用しています。

実世界の数値を使用して計算を行う場合、 -nano 、 -pico 、 -teraなどの方法で考えるのが非常に一般的です。

例:1pFコンデンサが何であるかは知っていますが、1e-12 Fコンデンサはやや使いにくいです。また、入力が 4 倍多く ( 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

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」を除いて、標準のサフィックスがサポートされます。使用できる文字は 1 文字に制限されていたため、代わりに「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 に答える