Hoe bepaal ik of een bepaald geheel getal tussen twee andere gehele getallen ligt (bijv. groter dan/gelijk aan 10000
en kleiner dan/gelijk aan 30000
)?
Ik gebruik 2.3 IDLE en wat ik tot nu toe heb geprobeerd, werkt niet:
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Antwoord 1, autoriteit 100%
if 10000 <= number <= 30000:
pass
Zie de docsvoor meer informatie.
Antwoord 2, autoriteit 8%
>>> 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
Antwoord 3, autoriteit 4%
Uw operator is onjuist. Moet if number >= 10000 and number <= 30000:
zijn. Bovendien heeft Python een afkorting voor dit soort dingen, if 10000 <= number <= 30000:
.
Antwoord 4, autoriteit 3%
Uw codefragment,
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
controleert feitelijk of het getal groter is dan zowel 10000 als 30000.
Ervan uitgaande dat u wilt controleren of het getal tussen 10000 en 30000 ligt, kunt u de Python-intervalvergelijking gebruiken:
if 10000 <= number <= 30000:
print ("you have to pay 5% taxes")
Deze Python-functie wordt verder beschreven in de Python-documentatie.
Antwoord 5
Er zijn twee manierenom drie gehele getallen te vergelijken en te controleren of btussen aen cligt:
if a < b < c:
pass
en
if a < b and b < c:
pass
De eerste lijkt beter leesbaar, maar de tweede werkt sneller.
Laten we vergelijken met 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
>>>
en met behulp van 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
Mogelijk kunt u Bereik gebruiken, zoals eerder gesuggereerd, maar het is echter veel langzamer.
Antwoord 6
if number >= 10000 and number <= 30000:
print ("you have to pay 5% taxes")
Antwoord 7
Definieer het bereik tussen de nummers:
r = range(1,10)
Gebruik het vervolgens:
if num in r:
print("All right!")
Antwoord 8
De problemen met vergelijkingen is dat ze moeilijk kunnen zijn om te debuggen wanneer u een >=
indient, waarbij er een <=
# v---------- should be <
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Python laat je gewoon schrijven wat je in woorden bedoelt
if number in xrange(10000, 30001): # ok you have to remember 30000 + 1 here :)
In Python3 moet u range
gebruiken in plaats van xrange
.
EDIT: Mensen lijken meer bezig te houden met Microbench Marks en hoe koele rijbewerkingen. Mijn antwoord gaat over defensieve (minder aanvalsoppervlak voor bugs) programmeren.
Als gevolg van een claim in de opmerkingen, heb ik hier de micro-benchmark toegevoegd voor 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
Als u zich zorgen maakt over de prestaties, kunt u het bereik eenmaal
berekenen
$ python3.5 -m timeit -s "R=range(10000, 30000)" "5 in R"
10000000 loops, best of 3: 0.0551 usec per loop
Antwoord 9
Stel dat er 3 niet-negatieve gehele getallen zijn: a
, b
, EN c
. Wiskundig spreekt, als we willen bepalen of c
is tussen a
en b
, inclusief, men kan deze formule gebruiken:
(C – A) * (B – C) & GT; = 0
of in Python:
> print((c - a) * (b - c) >= 0)
True
Antwoord 10
U wilt de uitvoer om de gegeven verklaring af te drukken, indien en alleen als het aantal tussen 10.000 en 30.000 valt.
code zou moeten zijn;
if number >= 10000 and number <= 30000:
print ("you have to pay 5% taxes")
Antwoord 11
Nog een andere oplossing
def check_if_between_range(current, start, end):
if current == start or end:
return True
elif start < end:
return current in range(start, end)
else:
return current in range(end, start)
Antwoord 12
De voorwaarde moet zijn,
if number == 10000 and number <= 30000:
print("5% tax payable")
reden voor het gebruik van number == 10000
is dat als de waarde van het nummer 50000 is en als we number >= 10000
gebruiken, de voorwaarde zal slagen, wat niet is wat je wil.