Как определить, находится ли данное целое число между двумя другими целыми числами (например, больше / равно 10000
и меньше / равно 30000
)?
Я использую 2.3 IDLE, и то, что я пытался до сих пор, не работает:
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Ответы:
источник
if number in range(10000, 30001)
предложенным другим решением? Кроме того, быстрее или медленнее при использованииset
вместоrange
?number
сначала сравнивается с10000
. Если оно меньше, чем10000
выражение, оно сразу замыкается и второе сравнение не проверяется. Сложность естьO(1)
.in range(0, n)
вместо этого генерирует всю последовательность чисел, а затем перебирает ее. Сложность естьO(n)
. Сложность по-in set(range(0, n))
прежнему заключается в том,O(n)
что создание набора имеет временную сложность:O(n)
ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt> python -m timeit '10000 <= 10 <= 30000'
> python -m timeit '10 in range(10000, 30001)'
> python -m timeit '10 in set(range(10000, 30001))'
источник
range
(илиxrange
в python2) возвращает генератор, поэтому вы не можете повторно протестировать его.4 in range(1,4)
это Неверно. Так что лучше используйте,1 >= r <= 4
поскольку это позволяет избежать возможных ошибок новичков1.5 in r
даетFalse
даже в 3.4. Этот ответ хорош только для целых чисел.1 <= r <= 4
if a <= x <= b
...) (2.) не работает дляfloat
типов (3 .) тест на дальность не является всеобъемлющим ... поэтому многие разработчики могут вносить ошибки, потому что ожидают, что диапазон будет исчерпывающимВаш оператор неверен. Должно быть
if number >= 10000 and number <= 30000:
. Кроме того, Python имеет сокращение для такого рода вещейif 10000 <= number <= 30000:
.источник
Ваш фрагмент кода,
фактически проверяет, больше ли число, чем 10000 и 30000.
Предполагая, что вы хотите проверить, что число находится в диапазоне 10000 - 30000, вы можете использовать сравнение интервалов Python:
Эта функция Python более подробно описана в документации по Python .
источник
источник
Проблема сравнений в том, что их трудно отладить, когда вы помещаете туда,
>=
где должно быть<=
Python позволяет просто написать то, что вы имеете в виду словами
В Python3 вам нужно использовать
range
вместоxrange
.редактировать: люди, кажется, больше заботятся о микробенчмарках и о том, как классно работают цепочки. Мой ответ - о защитном (менее уязвимом для ошибок) программировании.
В результате претензии в комментариях я добавил микро-тест для Python3.5.2
Если вы беспокоитесь о производительности, вы можете вычислить диапазон один раз
источник
range(10000, 30001)
в Python3. Это не создает списокxrange
в Python2 илиrange
в Python3 есть тесты членства. Попробуйте сами, если не верите.<=
только более эффективно, потому что это не создает объект диапазона. В обоих направлениях как O (1). Дело в том , что ОП был пытается сделать это по- своему и в конечном итоге с ошибкой . Быстрый код, который не так, хуже.Определите диапазон между числами:
Тогда используйте это:
источник
range
не считается последнее значение 10 в вашем случае.range(1,11)
правильно, если вам нужно сравнить между 1 и 10Есть два способа сравнить три целых числа и проверить, находится ли b между a и c :
а также
Первый выглядит более читабельным, но второй работает быстрее .
Давайте сравним использование dis.dis :
и используя timeit :
Кроме того, вы можете использовать диапазон , как предлагалось ранее, однако он намного медленнее.
источник
Предположим , что существует 3 неотрицательные целые числа:
a
,b
, иc
. Математически говоря, если мы хотим , чтобы определить , есть лиc
междуa
иb
, включительно, можно использовать следующую формулу:или в Python:
источник
Вы хотите, чтобы выходные данные печатали данный оператор, если и только если число находится в пределах от 10000 до 30000.
Код должен быть;
источник
Условие должно быть,
Причиной использования
number == 10000
является то, что если число равно 50000, и если мы используем,number >= 10000
условие будет выполнено, а это не то, что вы хотите.источник