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()
答案 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时才会引发。