Python:跟踪For循环的执行

时间:2011-11-07 03:36:30

标签: python if-statement tracing conditional-statements

我正在尝试跟踪包含for loopif conditionals的代码段的执行情况。但我需要帮助理解如何在python中执行for loops

请考虑以下示例:

  numAs = 0
  numEs = 0
  aStr1 = 'abcdefge'
   def someFunc(aString):
1.     for i in range(len(aString)): 
2.           if s[i] == 'a': 
3.               numAs += 1 
4.               continue 
5.           if s[i] == 'e': 
6.               numEs += 1 
7.               if numEs > numAs:  
8.                    break 
9. print(someFunc(aStr1))

问题:使用aStr作为参数,上述代码中第1行的执行次数是多少次?

我的理解是这段代码的第1行:for i in range(len(aString)),只会被执行一次。第2行和第5行将根据传递的字符串执行多次。当函数遇到continue语句时,它会返回第2行并运行它。请确认或纠正我的想法。

谢谢

1 个答案:

答案 0 :(得分:3)

您对代码的作用的理解是正确的。

FWIW,使用python -m trace --trace some_script.py可以很容易地执行脚本,或者您可以看到执行行数为python -m trace --count some_script.py

例如,后者调用 trace 会产生:

    1: def someFunc(aString):
            global numAs, numEs
    1:      s = aString
   10:      for i in range(len(aString)): 
    9:            if s[i] == 'a': 
    2:                numAs += 1 
    2:                continue 
    7:            if s[i] == 'e': 
    1:                numEs += 1 
    1:                if numEs > numAs:  
                           break

    1: numAs = 0
    1: numEs = 0
    1: someFunc('flammable')