2016-04-15 4 views
-1
def get_resources(*required): 
    """ 
    This is to help building functions in the main calculator faster 
    returns lists of resources needed, in the order requested 
    """ 
    print('-'*30) 
    a = ['acceleration', 0, 'a', 'm s⁻²', '.2f', 'scalar'] 
    A = ['amplitude', 0, 'A', 'm', '.2f', 'scalar'] # A: amplitude 
    Em = ['combined mass', 0, '∑m', 'kg', '.2f', 'scalar'] 
    f = ['frequency', 0, 'f', 'Hz', '.1f', 'scalar'] # f: frequency (also m s⁻¹) 
    F = ['force', 0, 'F', 'N', '.2f', 'scalar'] 
    g = ['gravity', 9.81, 'a', 'm s⁻²', '.2f', 'scalar'] 
    hl = ['wavelength', 0, 'λ', 'm', '.2f','vector'] # λ: wavelength 
    m = ['mass', 0, 'm', 'kg', '.2f', 'scalar'] 
    m1 = ['mass1', 0, 'm1', 'kg', '.2f', 'scalar'] 
    m2 = ['mass2', 0, 'm2', 'kg', '.2f', 'scalar'] 
    t = ['time', 0, 't', 's', '.2f', 'scalar'] 
    T = ['tension', 0, 'T', 'N', '.1f', 'scalar'] 
    T = ['period', 0, 'T', 's', '.3f', 'scalar'] # T: Time PERIOD of oscillation in seconds (T = 2π√(m/k)) 
    v = ['wave speed', 0, 'v', 'm s⁻¹', '.2f', 'scalar'] # v: speed of a wave (v = fλ OR v = λ/T) 
    v = ['velocity', 0, 'v', 'm s⁻¹', '.2f', 'scalar'] 
    v0 = ['initial velocity', 0, 'v₀', 'm s⁻¹', '.2f', 'vector'] 
    vf = ['final velocity', 0, 'vf', 'm s⁻¹', '.2f', 'vector'] 
    x = ['change in distance', 0, 'Δx', 'm', '.2f', 'scalar'] 
    x = ['distance', 0, 'x', 'm', '.2f', 'scalar'] 
    for i in required: 
     for j in vars().items(): 
      if i == j[0]: print('{} = {}'.format(j[0], j[1])) 

私は関数を引数にとり、関数内の値と比較してすべての可能なマッチを出力しています。しかし、可能なすべての一致を印刷するのではなく、最後に一致するものだけを印刷します。また、x = ['distance'、0、 'x'、 'm'、 '.2f'、 'scalar']> x = ['distance'のようなアルファベットの文字をリスト[1] 'ABCは、 'X'、 'M'、' .2f」、 'スカラー']python3リスト内のすべての変数を返します

瞬間、私は

get_resources('x','F', 'T') 

をすればそれは

------------------------------ 
x = ['distance', 0, 'x', 'm', '.2f', 'scalar'] 
F = ['force', 0, 'F', 'N', '.2f', 'scalar'] 
T = ['period', 0, 'T', 's', '.3f', 'scalar'] 

を印刷しますが、私このように印刷したいと考えています。

------------------------------ 
x = ['change in distance', xc, 'Δx', 'm', '.2f', 'scalar'] 
x = ['distance', xc, 'x', 'm', '.2f', 'scalar'] 
F = ['force', Fc, 'F', 'N', '.2f', 'scalar'] 
T = ['tension', Tc, 'T', 'N', '.1f', 'scalar'] 
T = ['period', Tc, 'T', 's', '.3f', 'scalar'] 

この関数を書き換えて、必要に応じて結果を返す方法を教えてください。

+0

? *実際の*変数名、各リストの3番目の項目、または任意のリスト内の項目?私が 'a'を検索すると、 '振幅'も表示されるのでしょうか?私が 'N'を検索すると、それは '緊張'と '力'を返すべきでしょうか? – Evert

+0

私は必要な名前、例えば、 'T' = 'list'である関数内のすべての項目と比較したいと思います。私は何も返さず、結果を印刷するだけです。たぶんそれは混乱の原因になります。 – nsy16

+0

あなたはまだマッチしたいことを言っているわけではありません:変数名そのものですか? – Evert

答えて

0

は、これはああも...残念ながら、私はコメントを削除する必要があり、問題を解決し、何を比較したい行うには

def get_resources(*required): """ This is to help building functions in the main calculator faster returns lists of resources needed, in the order requested """ print('-'*30) longstring = \ "a = ['acceleration', ac, 'a', 'm s⁻²', '.2f', 'scalar'] | " \ "A = ['amplitude', 0, 'Ac', 'm', '.2f', 'scalar'] | " \ "Em = ['combined mass', Emc, '∑m', 'kg', '.2f', 'scalar'] | " \ "f = ['frequency', fc, 'f', 'Hz', '.1f', 'scalar'] | " \ "F = ['force', Fc, 'F', 'N', '.2f', 'scalar'] | " \ "g = ['gravity', 9.81, 'a', 'm s⁻²', '.2f', 'scalar'] | " \ "hl = ['wavelength', hlc, 'λ', 'm', '.2f', 'vector'] | " \ "KE = ['kinetic energy', KEc, 'KE', 'J', '.1f', 'scalar'] | " \ "m = ['mass', 0, 'mc', 'kg', '.2f', 'scalar'] | " \ "m1 = ['mass1', m1c, 'm1', 'kg', '.2f', 'scalar'] | " \ "m2 = ['mass2', m2c, 'm2', 'kg', '.2f', 'scalar'] | " \ "t = ['time', tc, 't', 's', '.2f', 'scalar'] | " \ "T = ['tension force', Tc, 'T', 'N', '.1f', 'scalar'] | " \ "T = ['period', Tc, 'T', 's', '.3f', 'scalar'] | " "v = ['wave speed', vc, 'v', 'm s⁻¹', '.2f', 'scalar'] | " \ "v = ['velocity', vc, 'v', 'm s⁻¹', '.2f', 'scalar'] | " \ "v0 = ['initial velocity', v0c, 'v₀', 'm s⁻¹', '.2f', 'vector'] | " \ "vf = ['final velocity', vfc, 'vf', 'm s⁻¹', '.2f', 'vector'] | " \ "W = ['work', Wc, 'W','J', '.2f', 'scalar'] # W: work (W = Fd) | " \ "x = ['change in distance', xc, 'Δx', 'm', '.2f', 'scalar'] | " \ "x = ['distance', xc, 'x', 'm', '.2f', 'scalar'] | " variables = (longstring.split('|')) for i in required: for j in variables: k = j.split('=') k[0] = k[0].strip() if i == k[0]: k[1] = k[1].strip() print('{} = {}'.format(k[0], k[1])) get_resources('m1', 'm2', 'T', 'a', 'g', 't', 'x', 'v0') get_resources('m','v','KE','x','F', 'T')

関連する問題