2013-10-24 1 views
0

Почему это не работает?Python - как проверить, находится ли значение в заданном диапазоне float/integer?

reflace=0 
input = "55,1,1,1".split(",") 

# Now find the first field from comma 
input[reflace] = round(float(input[reflace]) , 2) + 0.01 
ranges = [(-1,1)] 
if any(lower <= input[reflace] <= upper for (lower, upper) in ranges): 
    print "+ " + input 

не печатает

+1

с 55.01 больше 1 :) – alko

+3

Является ли этот код намеренно запутанным? – roippi

+1

Это потому, что все ваши значения в 'input' находятся за пределами инклюзивного интервала [-1, 1], что приводит к сбою вашего' any (...) ', поэтому никогда не выполняется' print' внутри 'if' – inspectorG4dget

ответ

1

Изменение имени строки из input к чему-то еще. Я использую inputData.

reflace=0 
inputData = "55,1,1,1".split(",") 
# Now find the first field from comma 
inputData[reflace] = round(float(inputData[reflace]) , 2) + 0.01 

print inputData[reflace] ### Will print 55.01 

ranges = [(-1,1)] 
if any(lower <= inputData[reflace] <= upper for (lower, upper) in ranges): 
    print "+ " + inputData 

Итак, вы проверяете, находится ли 55.01 в диапазоне от -1, 1. Это неверно. Вот почему ничего не печатается.

Смежные вопросы