0

ポストコッドの平均人数を表す一連の値 tgat があります。これらは、、、pcode1 = 239そして今pcode2 = 245、私が立ち往生しているビットが来ます。平均は であると仮定しました。pcode3 = 210pcode4 = 217allpcode = 220

個々の pcode を合計平均と比較できるように、Python でコードを記述する方法はありますか? 私が正確にやりたいのは、と比較pcode1して、平均を表示するよりも高い/低い場合allpcode、それがより低いまたはより高いと言うことです。次に、他のすべてのpcodeについて繰り返したいと思います:)pcode1allpcodepcode1pcode1allpcodeallpcode

低いすべての平均値と高いすべての平均値を画面に表示したいと思います。

したがって、pcode 3 と 4 の平均のようなものはすべての pcode の平均よりも低く、pcode 1 と 2 はすべての p コードよりも高くなります。

どのように/どこから始めればよいかわからないので、そのようなコードを作成することは可能ですか?

4

2 に答える 2

0

このように、すべての値セットを頻繁に反復処理する必要がある場合は、通常、個別の変数の束ではなく、単一listの 、dict、またはその他のコレクション変数を使用することをお勧めします。例えば:

pcodes = {1: 239, 2: 245, 3: 210, 4: 217}

これで、次のようなコードを記述できます。

pcodes = {1: 239, 2: 245, 3: 210, 4: 217}
allpcode = 220

for pcode, value in pcodes.items():
    if value < allpcode:
        print('code {} is lower than allpcode'.format(pcode))
    elif value > allpcode:
        print('code {} is higher than allpcode'.format(pcode))

本当に個別の変数が必要な場合は、次のようにさらに作業を行う必要があります。

pcode1 = 239
pcode2 = 245
pcode3 = 210
pcode4 = 217
allpcode = 220

for i, value in enumerate((pcode1, pcode2, pcode3, pcode4)):
    if value < allpcode:
        print('code {} is lower than allpcode'.format(i + 1))
    elif value > allpcode:
        print('code {} is higher than allpcode'.format(i + 1))
于 2013-05-29T01:06:23.290 に答える
0

値のみを一致させたい場合は、リストを使用できます。

>>> pcode1 = 239
>>> pcode2 = 245
>>> pcode3 = 210
>>> pcode4 = 217
>>> lis = [pcode1, pcode2, pcode3, pcode4]
>>> allpcode= 220

>>> for i,x in enumerate(lis):
    if x < allpcode:
        print "pcode{} is less than {}".format(i+1,allpcode)
    elif x > allpcode:    
        print "pcode{} is greater than {}".format(i+1,allpcode)
...         
pcode1 is greater than 220
pcode2 is greater than 220
pcode3 is less than 220
pcode4 is less than 220

より良い辞書の使用:

変数は Python の値への参照にすぎないため、変数名にアクセスすることはできません。そして、pcodesそれらのそれぞれに変数を定義することがたくさんある場合、この問題を解決するには悪い方法です.dictを使用すると、はるかにクリーンになります。

#create dictionary with keys named pcode1, pcode2,...     
>>> dic = {'pcode1':239, 'pcode2':245, 'pcode3':210, 'pcode4':217}

>>> for k,v in dic.items():
    if v < allpcode:
        print "{} is less than {}".format(k ,'allpcode')
    elif v > allpcode:    
        print "{} is greater than {}".format(k,'allpcode')
...         
pcode3 is less than allpcode
pcode2 is greater than allpcode
pcode1 is greater than allpcode
pcode4 is less than allpcode

辞書は順序を維持しませんが、特定の順序でキーを取得するためにcollections.OrderedDict必要になる場合があります。sorted

于 2013-05-29T01:07:13.903 に答える