2016-01-20 80 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

相關問題