2016-04-06 19 views
-4

もう一度やり直してください。返信いただきありがとうございます。whileループ呼び出し配列outside

私はログファイルを持っています。私はそのエントリーを取り出し、それからすべてのごみを取り除きます。私はと残されています 配列またはリストは私がしたい各行はこれである呼び出すどのようにこの

23 
23.23.23.23 
45 
45.45.45.45 
100 
34.34.54.13 

です。

a = 1 
while a < 18: 
    a = a + 2 
    #logging.debug(line.split(PID_ANDROID)[a]) 
    countIP = a 
    trySomething() 

    if a == 20: 
     break 

しかし、私はそれを呼び出した後でやる必要があります。 私はこれは私が上で立ち往生していますものです

> do something 
> see if something is happening 
> if its not goto 3rd entry 
> try the same thing again. 

、最初のエントリを使用することができるようにしたいです。 私は何かの中からそれを呼び出すときに、グローバルにストアするためです。 pythonは私に私がstrかturpを私達に傾けることを私に伝えます。または以下のコードを使用すると、リスト内のすべての出力が継続されます。

atm私はこのコードを持っています。

def trySomething(): 
global countIP 
global LOG_SPLITER 
#logging.debug('Processing Number: %s' % (countIP,)) 
logging.debug(LOG_SPLITER.split(PID_ANDROID)[countIP]) 
time.sleep(.5) 
clearScreen() 
#grabBox90() 
#lineGoto() 

私の質問です。 どのようにループを行うことができますし、一度に1つだけを引っ張って、何かをすると、私は終了ループに次のものに行く?

+0

'c = + 2'は有効なPythonではないので、' x = x + 1'の代わりに 'x + = 1'のようなものを使うことをお勧めします。 – Signal

+5

あなたは明確な問題と疑問を提示しているので、この投稿は本当に洗練されている必要があります。それが現れているので、あなたが取り組んでいることについて散歩するように思えます。 – zephyr

答えて

0

最初のインデックスが1で、ステップサイズが2のforループを使用するかのように見えます。また、明示的なdebugステートメントを値1に使用し、3から始まる残りのループを避けますifテスト。コードの残りの部分が2ではなく1ずつインクリメントされる場合、ループを維持したまま、最初のスキップを適切に行うことができます。あなたは、単にline内のすべてのエントリを記録したい場合は

代わりの

c = 1 
#do my stuff 
while c < 20: 
    if c == 1: 
     logging.debug(line.split(PID_ANDROID)[c]) 
     c = + 2 
    else: 
     logging.debug('Moving on to a refresh') 
    # You do not incremennt c 
    # c += 2 should go here to increment every time 

Pythonは2

for i in xrange(1,20,2): 
    # do your processing 

Pythonは3

for i in range(1,20,2): 
    # do you processing 
+0

パーフェクトリファレンス、私は私のループの中に自分のコードを追加し、他のすべてを外に移動しました。 – MrT

+0

コードが動作し、私が達成しようとしていたことを知りたがっている人は、これがこれです。 a = 1 a == 1の場合はa <20: となります。 logging.debug(line.split(PID_ANDROID)[a]) ip = os.popen(adbInput + line.split(PID_ANDROID)[a]) a = + 2 ip.close() ip = os.popen(adbTap + '56 584 ')#タップスキャン ip.close() 時刻。sleep(3) grabBox90() if a == 20: break – MrT

0

あなたが行うことができます:

entries = line.split(PID_ANDROID) 
for e in entries[::2]: # take every other element 
    logging.debug(e) 

エントリを反復することは、「もっとpythonic」です。

+0

彼は明示的に 'c == 1'でデバッグして残りの部分をスキップするので、これは彼が求めているものではありません。 – sabbahillel

関連する問題