2017-08-03 14 views
0

私はボタンの幅とピクセルを計算して値を得るために一緒に追加するように計算しているので、私のコードに取り組んでいます。値が近いか高いかどうかを調べるときに値をリストと比較しようとしています。ここで値をリストと比較する

コードです:

CurrentRows = [375, 441, 507, 559, 610, 669, 724, 790, 838, 844, 849, 897, 910, 949, 959, 1009, 1016, 1018, 1019, 1072, 1125, 1138, 1184, 1186, 1189, 1238, 1246, 1286, 1419, 1620, 1762, 1840, 1943] 

nextprogram = int(program_id) + 1 
nextprogram1 = int(nextprogram) + 1 
nextprogram2 = int(nextprogram1) + 1 
nextprogram3 = int(nextprogram2) + 1 
program_button_1 = self.getControl(int(program_id)) 
program_button_2 = self.getControl(int(nextprogram)) 
program_button_3 = self.getControl(int(nextprogram1)) 
program_button_4 = self.getControl(int(nextprogram2)) 

width = program_button_1.getWidth() 
pos_X = pos_X + width + 5 

for pos_X1 in CurrentRows: 
    if pos_X1 >= pos_X: 
     pos_X = pos_X1 
     break 

program_button_2.setPosition(pos_X, pos_Y) 
width = program_button_2.getWidth() 
pos_X = pos_X + width + 5 

for pos_X1 in CurrentRows: 
    if pos_X1 >= pos_X: 
     pos_X = pos_X1 
     break 

program_button_3.setPosition(pos_X, pos_Y) 
width = program_button_3.getWidth() 
pos_X = pos_X + width + 5 


for pos_X1 in CurrentRows: 
    if pos_X1 >= pos_X: 
     pos_X = pos_X1 
     break 

変数pos_Xが、それは1184年に近づく値1194を表示すると、私はリストから1184の値を取得したいです。値が1083と表示されている場合、リストから1073を取得したいのですが、値が1125のリストと一致する場合は、リストから1125を取得します。

私のコードでどうすればいいですか?

+0

CurrentRowは常に昇順になりますか? –

+0

はい私はそう思いますか? –

+0

理由1194は1189ではなく1184になりますか?あなたの基準を理解しようとしています –

答えて

0

これを行うにはいくつかの方法があります - 私はいくつかの例を挙げています。最初はそれを行うための私のお気に入りの方法だろうものですが、それはあなたが心配しているものだならば、それは、おそらく最も効率的ではありません:

def highest(maximum): 
    return max([row for row in CurrentRows if row <= maximum]) 

次もmaxを利用が、1つのパスを行う必要がある唯一の必要があります行のリストの上に

何らかの理由でmaxが好きでない場合は、いつでもリストを繰り返して自分で確認できます。

def highest(maximum): 
    best = 0 
    for x in CurrentRows: 
     if x > maximum: 
      return best 
     best = x 
    return best 
+0

どうもありがとう私はコール関数なしでそれらを使用することができますか? –

+0

私があなたの質問を理解しているならば、あなたはあなたが望む変数で 'maximum'を置き換え、コードを関数ラッパーから引き出すことができます。 –

+0

いいえ、私はどのように変数を使用して戻り値を取得する関数を呼び出すことができますか?例: 'lookup = 1200最高(ルックアップ)'。関数を呼び出すために使用できるサンプルコードを私に与えていない。 –

関連する問題