2016-01-20 66 views
0

我在这发现了一个线程,但我没有任何运气得到它的工作。两个值之间的蟒整数

min = 9 
max = 10 
a = ['8','9','10','11'] 

for x in a: 
    if max >= x > min: 
     print 'one' 
    else: 
     d = (max >= x > min) 
     print d, x 
    if (x > min >= max): 
    #if (min <x>= max): 
     print x 
    else: 
     print x, ' is equal to or greater than', max 

输出:

False 8 
8 is equal to or greater than 10 
False 9 
9 is equal to or greater than 10 
False 10 
10 is equal to or greater than 10 
False 11 
11 is equal to or greater than 10 

这个线程working code?表示语法必须是:

if 10000 <= number <= 30000: 
pass 

我已经试过迹象我能想到的每一种组合,和回报总是对所有人来说都是对的,这是错误的。

我也试过这个(更长)代码:

min = 9 
max = 10 
a = ['8','9','10','11'] 

for x in a: 
    print 'X is:', x 
    if int(x) == max: 
     print 'max found:', x 
    elif int(x) < max: 
     if int(x) > min: 
      print 'min:', x 
    elif int(x) < min: 
     print 'under range', x 
    else: 
     print 'out of range', x 

与产出也意外的,因为我希望赶上的所有情况:

X is: 8 
X is: 9 
X is: 10 
max found: 10 
X is: 11 
out of range 11 

唉!我怎样才能正确地检查所有项目,然后返回,超过我的最小值,最大值?

+4

你比较字符串和整数。 – vaultah

+0

谢谢!检查第二位代码。 – shawn

+0

没有> min和 ='和'<='? –

回答

0

您需要比较int,int或str,str。过去我会推荐bisect它给你插入点。

例如:

import bisect 

minint, maxint = 9, 10 
a = ['8','9','10','11'] 

b = [int(x) for x in a] 

minidx = bisect.bisect_left(b, minint) 
maxidx = bisect.bisect_left(b, maxint) 

print('below:', a[0:minidx]) 
print('between:', a[minidx:maxidx]) 
print('above:', a[maxidx:]) 

,其输出:

below: ['8'] 
between: ['9'] 
above: ['10', '11'] 

根据如何定义的比较<=<在每个需要应用要么bisect_leftbisect_right

端部的

如果我们将第一个bisect更改为right

import bisect 

minint, maxint = 9, 10 
a = ['8','9','10','11'] 

b = [int(x) for x in a] 

minidx = bisect.bisect_right(b, minint) 
maxidx = bisect.bisect_left(b, maxint) 

print('below:', a[0:minidx]) 
print('between:', a[minidx:maxidx]) 
print('above:', a[maxidx:]) 

输出的变化,以及没有什么事是在9和10之间

below: ['8', '9'] 
between: [] 
above: ['10', '11'] 

的文档(2.7):https://docs.python.org/2/library/bisect.html

+0

不错!我没有对分的经验。感谢发布! – shawn

+0

除了我的第一个代码块中的类型错误 - 事实证明我实际上并不需要检查内部,只有情况A或B.此代码完成它应该执行的操作: if len(rec)== max_rec_len : authored.append(rec) elif len(rec)== min_rec_len: records.append(rec) – shawn