2016-04-04 3 views
-4

私はviswaです。私はelifコマンドを使って簡単なコードを用意しました。 私はコードと条件を共有します...それは働いています。私は簡単なプログラムを探しています。もし同じ結果に利用可能なものPythonでelifコードを単純化するには

入力名など.... = 'AEX_ABC'、 'AEX_XXX'、 'AEX_YYY'、 'C​​AI_XXX'、 'C​​AI_YYY' です。、 出力はAEX_1、AEX_2、AEX_3する必要があります、CAI_1、CAI_2、....

プログラム:

 name=(<user input>) 
     AEX,CAI,CAR,CCA,CEL,CLM,CRE,ECH,FAV,FRE,GMP,INS,ROU,TAR,TAV,UAV,VEH,ERROR=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
     name=part._name.split('_') 
     if name[0]=='AEX': 
      AEX+=1 
      i=AEX 
     elif name[0]=='CAI': 
      CAI+=1 
      i=CAI 
     elif name[0]=='CAR': 
      CAR+=1 
      i=CAR 
     elif name[0]=='CCA': 
      CAR+=1 
      i=CCA 
     elif name[0]=='CEL': 
      CEL+=1 
      i=CEL 
     elif name[0]=='CLM': 
      CLM+=1 
      i=CLM 
     elif name[0]=='CRE': 
      CRE+=1 
      i=CRE 
     elif name[0]=='ECH': 
      ECH+=1 
      i=ECH 
     elif name[0]=='FAV': 
      FAV+=1 
      i=FAV 
     elif name[0]=='FRE': 
      FRE+=1 
      i=FRE 
     elif name[0]=='GMP': 
      GMP+=1 
      i=GMP 
     elif name[0]=='INS': 
      INS+=1 
      i=INS 
     elif name[0]=='ROU': 
      ROU+=1 
      i=ROU 
     elif name[0]=='TAR': 
      TAR+=1 
      i=TAR 
     elif name[0]=='TAV': 
      TAV+=1 
      i=TAV 
     elif name[0]=='UAV': 
      UAV+=1 
      i=UAV 
     elif name[0]=='VEH': 
      VEH+=1 
      i=VEH 
     else: 
      ERROR+=1 
      i='error'+str(ERROR) 
     output=name[0]+i 
     print(output) 

答えて

3

あなたは辞書検索でこれを置き換えることができます。

stock_indices={<all stock indices:0>} 
error=0 
try: 
    stock_indices[input[0]]+=1 
except KeyError: 
    error+=1 
1

Jesse Bakkerは言うとおり、これは辞書の仕事です。関連項目のグループを追跡するために変数名をたくさん作成するときは、おそらく辞書を使用しているはずです。 辞書を初期化するためにdictリテラルを使用しますが、すべての項目の初期値が同じ場合は、次のようにdict.fromkeysクラスメソッドを使用すると便利です。パーサが、それは複数の上で続けていることを知っているように、Pythonは自動的に隣接する文字列リテラルに参加しますが、我々は、括弧で式をラップする必要があります:私は2つの文字列にkeys文字列を分割しました短いコード行を保つために

ライン。

keys = ('AEX,CAI,CAR,CCA,CEL,CLM,CRE,ECH,FAV,FRE,' 
    'GMP,INS,ROU,TAR,TAV,UAV,VEH,ERROR'.split(',')) 

stock_indices = dict.fromkeys(keys, 0) 

def update_stock(name): 
    key = name.partition('_')[0] 
    if key not in stock_indices: 
     key = 'ERROR' 
    val = stock_indices[key] + 1 
    stock_indices[key] = val 
    return key, val 

# Test 
test = (
    'AEX_ABC', 
    'AEX_XXX', 
    'AEX_YYY', 
    'BAD_ZZZ', 
    'CAI_XXX', 
    'CAI_YYY', 
) 

for name in test: 
    key, val = update_stock(name) 
    print('{0}_{1}'.format(key, val)) 

出力

AEX_1 
AEX_2 
AEX_3 
ERROR_1 
CAI_1 
CAI_2 
関連する問題