私は回転のソリッドの音量を計算するプログラムを書いています。これの最初のステップは、積分を計算することです。私はこのためにscipy.integrate
を使用していますが、私は方程式(例えば、コマンドラインでx=x**2
入力のような最良の方法を見つけることができません。ラムダとしての機能を取る。残念ながら、は、引数の型としてラムダになりません、そしてラムダ(f = lambda x: args.equation
)を構築するための文字列を使用しようとするだけで(当然のことながら、実際に)文字列を返します。関数を引数として取る方法は? (Python)
はここで私は「何ですこれまでに得たVEの:
import sys
import argparse
import math
from scipy import integrate
parser = argparse.ArgumentParser(description='Find the volume of the solid of rotation defined')
parser.add_argument('equation', help='continous function')
parser.add_argument('a', type=float, help='bound \'a\'')
parser.add_argument('b', type=float, help='bound \'b\'')
parser.add_argument('-axis', metavar='x|y', help='axis of revolution')
args = parser.parse_args()
def volume(func, a, b, axis=None):
integral = integrate.quad(func, a, b)
return scipy.py * integral
print volume(args.equation, args.a, args.b)
が何かアドバイスが理解されるであろう おかげ
ありがとうございます。より安全な方法もありますか? –
「安全」であるためには、許可する構文を正確に文書化し、パーサーを作成する必要があります。それはたくさんの仕事です。 –