2017-04-21 34 views
0

我有我希望的簡單問題。我有這個簡單的列表缺少參數錯誤不能正常工作

pommes : 54 
orange 
bananes : 18 

如果我的argv [1]缺少像橙字的情況下,該方案是actualy不工作。我試圖提出這個休閒代碼的錯誤,但它沒有奏效。在這之下,我已經包含了我的代碼。

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

你必須檢查'len(parts)== 2' __before__你試圖訪問第二部分。 – DyZ

回答

1

你沒有分配之前檢查[1]存在或部分零件[1]到DROITE droite = parts[1],如果零件的長度爲1,則無法獲得部分[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

非常感謝,我現在明白了 –