Python 2.7 如何在浮点数在范围内的情况下运行for循环

Python 2.7 如何在浮点数在范围内的情况下运行for循环,python-2.7,list,for-loop,Python 2.7,List,For Loop,我试着运行我的长代码,但在这些短文中我的想法 我的问题需要两个条件。第一个i在范围内。第二个使用列表中的所有值 m = [181.452, 147.0213, 480.33, 1000.05] for i in m: if i in range(0 , 200): print ('Red') if i in range(201 , 500): print ('white') if i in range(501 , 1000):

我试着运行我的长代码,但在这些短文中我的想法

我的问题需要两个条件。第一个
i
在范围内。第二个使用列表中的所有值

m = [181.452, 147.0213, 480.33, 1000.05]
for i in m:
    if i in range(0 , 200):
        print ('Red')
    if i in range(201 , 500):
        print ('white')
    if i in range(501 , 1000):
        print ('green')
    if i in range(1000 , 1500):
        print ('blue')
当列表中的值
int
时,您可以看到:

m = [181, 147.0213, 480.33, 1000.05]
for i in m:
    if i in range(0 , 200):
        print ('Red')
    if i in range(201 , 500):
        print ('white')
    if i in range(501 , 1000):
        print ('green')
    if i in range(1000 , 1500):
        print ('blue')
输出到第二个代码:
Red

您使用的是
range()
,它返回一个
int
值的迭代器,因此代码不起作用。意思是如果你写过

if i in range(0,5)
然后它将转化为:

if i in (0, 1, 2, 3, 4)
所以你的浮点值没有在这里被捕获。此外,当您使用比较运算符时,使用迭代器进行比较不是一个好的做法。

使用以下代码:

m = [181.452, 147.0213, 480.33, 1000.05]

for i in m:
    if 0 <= i <= 200:     # this is pythonic way to write "if i >= 0 and i <= 200"
        print('Red')
    elif 200 < i <= 500:
        print ('white')
    elif 500 < i <= 1000:
        print ('green')
    elif 1000 < i <= 1500:
        print ('blue')

对于范围内的i
,而不是
如果
是什么阻止您运行代码?您没有说明您遇到了什么问题或提出了什么问题。我编辑了我的问题。现在一切正常,我将
float
转换为
int
如果int(I)在(0,200)范围内:
Red
Red
white
blue