Python循环控件继续无法正常工作

时间:2012-10-23 14:25:36

标签: python

据我所知,“继续”将跳回到循环的顶部。但在我的情况下,它不会跳回去,继续不喜欢我:(

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等......但它总是先执行(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!!")

为什么它总是会转到else部分,而不会跳回到for循环?提前谢谢。

1 个答案:

答案 0 :(得分:1)

此处elif run_test_case(cases.split()):您要调用run_test_case方法,该方法将运行您的代码以评估elif条件的结果。

如果该方法的结果评估为elif,它只会进入由continue(在您的情况下为True)分隔的块,否则它将跳转到else子句。

问题可能在于您的run_test_case代码,它永远不会返回True,因此您永远不会得到您期望的行为。

如果不确切地知道你想要完成什么,很难说,但是我会说你在代码的末尾错过了return True,这意味着,如果一切正常直到最后,你希望它返回True ......但我只是在猜测,你需要考虑该方法应该做什么。

在python中,ifelif子句不仅针对TrueFalse常量进行评估,而且更常用于类似True和False的值。例如,None是类似虚假的值,非空字符串是类似于真值的值等。

从文档中查看有关被视为真或假的值:

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