3

私は Python が初めてで、以下のコードに示すように、ユーザー入力から異なるマテリアル パラメータを持つリストを作成する関数を作成しようとしています。

def material():
    layers = int(raw_input("State the number of material layers in the wall (0 for default material): "))

    rho = [] # Density [kg/m3]
    c = [] # Heat capacity [J/(kg K)] 
    k = [] # Heat conductivity [W/(m K)]
    #a = [] # Thermal diffusivity [m2/s]
    d = [] # Thickness of material [m]

    # Saveing material properties
    if layers == 0:
        rho.append(2300)
        c.append(900)
        k.append(1.6)
        d.append(3.2)
        layers = 1

    else:
        for i in range(layers):
            print "\n" "Define thermal properties for material", i+1,"(starting from left)"
            rho.append(float(raw_input("Density [kg/m3]: ")))
            c.append(float(raw_input("Heat capacity [J/(kg K)]: ")))
            k.append(float(raw_input("Heat conductivity [W/(m K)]: ")))
            d.append(float(raw_input("Thickness [m]: ")))

    return ???

dのリストの 2 番目の項目などを印刷したり、値を使用したりできるように、rho、c、k、d、およびレイヤーを返すにはどうすればよいですか?

print d[1]
4

4 に答える 4

13

rho、c、k、d、およびレイヤー [...] を返すにはどうすればよいですか?

それをするだけです:

return rho, c, k, d, layers

そして、あなたはそれを次のように呼びます

rho, c, k, d, layers = material()
print d[1]

dict返すものが多いほど、 (またはnamedtuple、またはクラスなど)のような構造にすべてをまとめてラップする可能性が高くなることに注意してください。

于 2013-10-19T18:48:44.403 に答える
6

returnコンマで区切ると、複数の値を返すことができます。

return rho, c, k, d, layers

これにより、 、、、、およびmaterialを含むタプルが返されます。rhockdlayers

materialこれが完了すると、アンパックによって返される値にアクセスできます。

rho, c, k, d, layers = material()

ここにデモンストレーションがあります:

>>> def func():
...     return [1, 2], [3, 4], [5, 6]
...
>>> a, b, c = func()
>>> a
[1, 2]
>>> b
[3, 4]
>>> c
[5, 6]
>>> a[1]
2
>>>
于 2013-10-19T18:48:58.367 に答える
0
def return_values():
    # your code
    return list1, list2

以下のような値を取得します

value1, value2 = return_values()
于 2013-10-19T18:49:52.790 に答える
0
def function_returning_multiple_list():
  l1=[]
  l2=[]
  l3=[]
  return (l1,l2,l3)


def another_fucntion():
  list1,list2,list3=function_returning_multiple_list()
  print list2
于 2013-10-19T18:50:10.227 に答える