Определение, находится ли целое число между двумя другими целыми числами
Как мне определить, находится ли данное целое число между двумя другими целыми числами (например, больше или равно 10000
и меньше или равно 30000
)?
5 ответ(ов)
В Python функция range()
создает последовательность чисел. В вашем примере r = range(1, 4)
создает последовательность чисел от 1 до 3 (4 не включительно).
Вот результаты для каждого проверки:
1 in r
возвращаетTrue
, потому что 1 входит в диапазон.2 in r
возвращаетTrue
, потому что 2 также входит в диапазон.3 in r
возвращаетTrue
, потому что 3 является последним числом в диапазоне.4 in r
возвращаетFalse
, так как 4 не входит в диапазон (4 не включительно).5 in r
возвращаетFalse
, поскольку 5 выходит за пределы диапазона.0 in r
возвращаетFalse
, так как 0 также не входит в заданный диапазон.
Таким образом, ваш код и вывод показывают правильное поведение функции range()
.
Вы можете использовать условие if number >= 10000 and number <= 30000:
. Однако в Python есть более короткий и удобный способ записи этого условия: if 10000 <= number <= 30000:
. Этот вариант более читаем и позволяет сократить код.
Существует два способа сравнения трех целых чисел и проверки, находится ли b между a и c:
Первый способ:
if a < b < c:
pass
Второй способ:
if a < b and b < c:
pass
Первый способ выглядит более читаемым, однако второй выполняется быстрее.
Давайте сравним их с помощью dis.dis:
>>> dis.dis('a < b and b < c')
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 COMPARE_OP 0 (<)
6 JUMP_IF_FALSE_OR_POP 14
8 LOAD_NAME 1 (b)
10 LOAD_NAME 2 (c)
12 COMPARE_OP 0 (<)
>> 14 RETURN_VALUE
>>> dis.dis('a < b < c')
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 DUP_TOP
6 ROT_THREE
8 COMPARE_OP 0 (<)
10 JUMP_IF_FALSE_OR_POP 18
12 LOAD_NAME 2 (c)
14 COMPARE_OP 0 (<)
16 RETURN_VALUE
>> 18 ROT_TWO
20 POP_TOP
22 RETURN_VALUE
>>>
И с помощью timeit:
~$ python3 -m timeit "1 < 2 and 2 < 3"
10000000 loops, best of 3: 0.0366 usec per loop
~$ python3 -m timeit "1 < 2 < 3"
10000000 loops, best of 3: 0.0396 usec per loop
Также вы можете использовать range, как было предложено ранее, однако это значительно медленнее.
Чтобы определить диапазон между числами в Python, вы можете использовать функцию range()
. В вашем случае, определение выглядит следующим образом:
r = range(1, 10) # Это создаст объект range от 1 до 9 (10 не включительно)
Далее вы можете использовать этот диапазон, например, для проверки, находится ли число num
внутри него. Вот как это можно сделать:
if num in r:
print("Все в порядке!") # Если num находится в диапазоне от 1 до 9, выведется это сообщение
Таким образом, если num
будет равно 5, вывод программы будет "Все в порядке!", а если, например, num
будет равно 10, сообщение не появится, так как 10 не входит в заданный диапазон.
Если ваше число находится в диапазоне от 10000 до 30000, включительно, то вам нужно заплатить 5% налогов. Вот пример кода на Python:
if number >= 10000 and number <= 30000:
print("Вы должны заплатить 5% налогов")
Убедитесь, что переменная number
содержит числовое значение перед выполнением этого условия.
Как клонировать список, чтобы он не изменялся неожиданно после присваивания?
Преобразование списка словарей в DataFrame pandas
Как отсортировать список/кортеж списков/кортежей по элементу на заданном индексе
Как отменить последнюю миграцию?
Как явно освободить память в Python?