2017-04-21 3 views
0

私は簡単な質問をしています。私はこの単純なリストを持っています引数のエラーが機能していない

pommes : 54 
orange 
bananes : 18 

私のargv [1]がワードオレンジの場合のようにない場合、プログラムは実際には動作しません。私はこの休止中のコードでエラーを発生させようとしましたが、それは動作しませんでした。この下に私のコードが含まれています。

if parts[1] == "": 
    print("La ligne '", i, "' n'est pas correctement formaté.") 
    sys.exit() 

は、ここで私は上記しようとした部分なしで働いているコードの私のブロックです。

for i in message: 
    parts = i.split(":") 
    gauche = parts[0].strip() 
    droite = parts[1] 
    try: 
     if len(parts) != 2: 
      print("La ligne '", i, "' n'est pas correctement formaté.") 
      sys.exit() 
     elif not gauche.isalpha(): 
      print("La ligne '", i, "' n'est pas correctement formaté.") 
      sys.exit() 
     droite = int(droite) 
    except ValueError: 
     print("La ligne '", i, "' n'est pas correctement formaté.") 
     sys.exit() 
+1

2番目の部分にアクセスしようとすると 'if len(parts)== 2' __before__をチェックする必要があります。 – DyZ

答えて

1

あなたが部品を割り当てる前に、部品をチェックする必要が[1] [1]、そこに意志の部分の長さが1であれば、あなたが部品を得ることができない、[1] droite = parts[1]をドロワットするために存在するかしません例外発生:IndexError: list index out of rangeです。以下は

はあなたのコードに基づいて修正している:

for i in message: 
parts = i.split(":") 
gauche = parts[0].strip() 
droite = parts[1] if len(parts)==2 else 0 # set the default value to 0 
try: 
    if len(parts) != 2: 
     print("La ligne '", i, "' n'est pas correctement formaté.") 
     sys.exit() 
    elif not gauche.isalpha(): 
     print("La ligne '", i, "' n'est pas correctement formaté.") 
     sys.exit() 
    droite = int(droite) 
except ValueError: 
    print("La ligne '", i, "' n'est pas correctement formaté.") 
    sys.exit() 

例外とValueErrorであればところで、あなたのコードで発生した例外は、それだけで発生します。

+0

ありがとう、私は今理解する –

関連する問題