ZeroDivisionError:浮点数被零除-Python

时间:2019-02-18 19:52:05

标签: python list floating-point

我了解为什么会收到此错误,但是我正在努力想办法解决该问题。...

我的代码试图计算列表中值之间的百分比差异:

values = [0.52, 0.42, 0.0, 0.65, 0.45]
conversion_values = []

for x in range(1, len(values), 1):
    val_1 = values[x-1]*100
    val_2 = values[x]*100
    diff = (val_2/val_1)*100
    conversion_values.append(int(round(diff)))

预期输出:

conversion_values
[81, 0, '-', 69]

2 个答案:

答案 0 :(得分:1)

如果您希望修改现有代码,则可以采用以下方式:

values = [0.52, 0.42, 0.0, 0.65, 0.45]
conversion_values = []

for x in range(1, len(values), 1):
    val_1 = values[x-1]*100
    if val_1 == 0: #Check if val_1 is 0.
        conversion_values.append('-')
    else:
        val_2 = values[x]*100
        diff = (val_2/val_1)*100
        conversion_values.append(int(round(diff)))
print(conversion_values)

输出为:

[81, 0, '-', 69]

答案 1 :(得分:1)

可以肯定,以下内容将满足您的要求。

values = [0.52, 0.42, 0.0, 0.65, 0.45]
conversion_values = []

for x in range(1, len(values), 1):
    val_1 = values[x-1]*100
    val_2 = values[x]*100
    try:
        diff = (val_2/val_1)*100
        conversion_values.append(int(round(diff)))
    except ZeroDivisionError:
        conversion_values.append('-')