Как запустить цикл с числом с плавающей запятой в диапазоне - PullRequest
0 голосов
/ 28 мая 2019

Я попытался запустить свой длинный код, но идея в этих коротких строках.

Моя проблема требует двух условий. Первый, который 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

1 Ответ

1 голос
/ 28 мая 2019

Вы используете 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')

Вывод:

Red
Red
white
blue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...