我目前正在处理一个包含mx+b形式的线性表达式的字符串,并返回一个包含斜率(m(和垂直截距(b(作为浮点值的列表。
如果字符串同时包含m和b(即5x+3(,则程序运行良好。但是,如果字符串只包含m(即,5x(,则它不起作用。
我有
IndexError: list index out of range.
我知道问题是什么,但我想我仍然缺乏纠正它的技能。我想联系一下,看看我能做些什么来解决它。
def getLinearParameters(mx_plus_b):
equation_values = mx_plus_b.split("+")
m = equation_values[0][:-1]
b = equation_values[1]
return [float(m), float(b)]
print(getLinearParameters("5x"))
您可以使用try-except。except
捕获异常并处理异常
这样尝试:
def getLinearParameters(mx_plus_b):
equation_values = mx_plus_b.split("+")
m = equation_values[0][:-1]
try:
b = equation_values[1]
except:
b = 0
return [float(m), float(b)]
print(getLinearParameters("5x"))
避免使用try
-except
块来修复错误,因为这是创可贴,而不是正确的解决方案。相反,使用if
-else
语句:
def getLinearParameters(mx_plus_b):
equation_values = mx_plus_b.split("+")
m = equation_values[0][:-1]
if len(equation_values) > 1:
b = equation_values[1]
else:
b = 0
return [float(m), float(b)]
print(getLinearParameters("5x"))
您需要将代码放入Try并添加catch以防发生异常并进行处理
try:
#Statments
except IndexError:
#Error occurred
#Do something
例如,在except中,可以添加默认值。