Как проверить, находится ли int между двумя числами?



Я использую 2.3 простоя и у меня возникли проблемы.



Мне нужно проверить, является ли число между двумя другими числами, 10000 и 30000:



if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")


Это не работает слишком хорошо.

231   6  

6 ответов:

if 10000 <= number <= 30000:
    pass
r=range(1,4)

>>> 1 in r
True
>>> 2 in r
True
>>> 3 in r
True
>>> 4 in r
False
>>> 5 in r
False
>>> 0 in r
False

ваш оператор неправильно. Должно быть if number >= 10000 and number <= 30000:. Кроме того, Python имеет стенографию для такого рода вещей,if 10000 <= number <= 30000:.

ваш код,

if number >= 10000 and number >= 30000:
    print ("you have to pay 5% taxes")

на самом деле проверяет, если количество больше, чем 10000 и 30000.

предполагая, что вы хотите проверить, что число находится в диапазоне 10000-30000, вы можете использовать сравнение интервалов Python:

if 10000 <= number <= 30000:
    print ("you have to pay 5% taxes")

эта функция Python далее описывается в документации Python.

if number >= 10000 and number <= 30000:
    print ("you have to pay 5% taxes")

проблема с сравнениями заключается в том, что их трудно отлаживать, когда вы ставите >= где должно быть <=

#                             v---------- should be <
if number >= 10000 and number >= 30000:
    print ("you have to pay 5% taxes")

Python позволяет вам просто написать что вы имеете в виду на словах

if number in xrange(10000, 30001): # ok you have to remember 30000 + 1 here :)

в Python3, вам нужно использовать range вместо xrange.

edit: люди, похоже, больше обеспокоены знаками microbench и тем, как крутые операции по цепочке. Мой ответ касается защиты (меньше поверхности атаки для ошибок) программирование.

в результате претензии в комментариях, я добавил микро бенчмарк здесь для Python3.5. 2

$ python3.5 -m timeit "5 in range(10000, 30000)"
1000000 loops, best of 3: 0.266 usec per loop
$ python3.5 -m timeit "10000 <= 5 < 30000"
10000000 loops, best of 3: 0.0327 usec per loop

если вы беспокоитесь о производительности, вы можете вычислить диапазон один раз

$ python3.5 -m timeit -s "R=range(10000, 30000)" "5 in R"
10000000 loops, best of 3: 0.0551 usec per loop

Comments

    Ничего не найдено.