1

我有一个“if-elif-else”块,如果一个值在该范围内,它就会被分配一个特定的值。但是,当我运行它时,它只是为它分配了 else 块中的值。这是我的代码:

if mile < 300:
    mileInfo['miles'] = 1
elif mile>=300 and mile <2000:
    mileInfo['miles'] = 2
elif mile>=2000 and mile <5000:
    mileInfo['miles'] = 3
else:
    mileInfo['miles'] = 4

Mile 返回一个浮点数,但我认为这并不像在 Java 中那么重要。

谢谢

4

2 回答 2

7

也许mile是一个包含数字的字符串?它不会自动转换。

>>> "1" < 100
False
>>> "1" == 1
False

您无需elif重新检查前一个if是否为假。如果值不是< 300,则保证是>=300

于 2012-11-28T19:39:28.067 回答
3

问题是'mile'是一个字符串,正如其他成员指出的那样,字符串不会自动转换。所以我将代码更改为:

mileInt = int(float(mile))

if mileInt < 300:
    mileInfo['miles'] = 1
elif mileInt < 2000:
    mileInfo['miles'] = 2
elif mileInt < 5000:
    mileInfo['miles'] = 3
else:
    mileInfo['miles'] = 4

使用 print type(mile) 有助于检查类型是什么。

于 2012-11-28T20:25:41.487 回答