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 は float を返しますが、これはたとえば Java ほど重要ではないと思いました。

ありがとう

4

2 に答える 2

7

多分数字mileを含む文字列ですか?自動変換されません。

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

以前が偽だったelifことを再確認する必要はありません。if値が でなかった場合< 300、 であることが保証されます>=300

于 2012-11-28T19:39:28.067 に答える
3

問題は、「マイル」が文字列であり、他のメンバーが指摘したように、文字列が自動的に変換されないことでした。だから私はコードを次のように変更しました:

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 に答える