0

私が知っているように、「続行」はループの先頭に戻ります。しかし、私の場合、それは跳ね返っていません、続けて私を好きではありません:(

for cases in files:
  if ('python' in cases.split()):
    execute_python_scripts(cases.split())
    elif run_test_case(cases.split()):
      continue
    else:
      logger("I am here")
      break 

私の場合run_test_case()、1、2、3、4などを与えます...しかし、それは常にfirst(1)を実行し、else部分にジャンプします。そのため、「私はここにいます」というメッセージが表示されます。このようには機能しないはずです。「続行」を使用しているので、forループにジャンプするはずです。

以下はrun_test_case()

def run_test_case(job):
  for x in job:
    num_of_cases = num_of_cases - 1
    test_type = x.split('/')
    logger(log_file,"Currently "+ x +"hai!!")
    if test_type[0] == 'volume':
      backdoor = test_type[1].split("_")
      if backdoor[0] == 'backdoor':
        return get_all_nas_logs()
      else:
        if perform_volume_operations(x,num_of_cases) == False:
          return False
        else:
      logger(log_file,"wrong ha!!")

forループに戻ることなく、常にelse部分に移動するのはなぜですか?前もって感謝します。

4

1 に答える 1

1

ここでは、条件の結果を評価するためにコードを実行するメソッドelif run_test_case(cases.split()):を呼び出しています。run_test_caseelif

そのメソッドの結果がと評価されたelif場合は、(あなたの場合は)で区切られたブロックにのみ入ります。それ以外の場合は、else句にジャンプします。continueTrue

問題はおそらくrun_test_caseコードにあり、Trueを返すことはないため、期待した動作を得ることができません。

何を達成したいのかを正確に知らずに言うのは難しいですがreturn True、そのコードの最後にが欠けていると思います。つまり、すべてが最後まで正しく実行された場合は、Trueを返す必要があります。 。しかし、私はここで推測しているだけです、あなたはその方法が何をすることになっているのかを考える必要があります。

Pythonでは、iforelif句は、定数TrueFalse定数だけでなく、より一般的にはTrueのような値とFalseのような値に対して評価されます。Noneたとえば、はfalseのような値であり、空でない文字列はtrueのような値です。

真または偽と見なされる値に関するドキュメントからこれを確認してください。

http://docs.python.org/library/stdtypes.html

于 2012-10-23T14:29:25.700 に答える