缺少参数错误不起作用

时间:2017-04-21 05:56:13

标签: python

我希望我有一个简单的问题。我有这个简单的清单

pommes : 54
orange
bananes : 18

如果我的argv [1]丢失,那么该程序实际上不起作用,就像单词orange一样。我试图用这个不好的代码引发错误,但它没有用。在此我已经包含了我的代码。

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 个答案:

答案 0 :(得分:1)

在将零件[1]分配给droite droite = parts[1]之前,你必须检查零件[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()

顺便说一下,你在代码中引发的Exception,只有在Exception为ValueError时才会引发。