我正在尝试跟踪包含for loop
和if 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行并运行它。请确认或纠正我的想法。
谢谢
答案 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')