我可以告诉我为什么以下代码会产生这样的结果吗?
def weird(s):
print s
for ii in range(len(s)):
for jj in range(ii, len(s)+1):
print ii, jj
return
if __name__=="__main__":
ss="acaacb"
weird(ss)
结果:
acaacb
0 0
0 1
0 2
0 3
0 4
0 5
0 6
ii 的值是否应该迭代0到5?
答案 0 :(得分:13)
不,您在外部return
循环内放置了for
语句。在第一次迭代结束时,退出该函数。这是return
陈述的作用;无论你当前正在执行什么循环结构,它都会结束函数。
删除return
语句,循环将继续一直运行到i = 5
。
答案 1 :(得分:2)
查看你的原始代码粘贴,你的缩进看起来很奇怪,可能是由于混合制表符和空格(很难确定,因为有时候空格无法在它开始的同一状态下粘贴到SO中)。看每一行:
'\n'
'\n'
' def weird(s):\n'
' print s\n'
' \n'
' for ii in range(len(s)):\n'
' for jj in range(ii, len(s)+1):\n'
' print ii, jj\n'
' \n'
' return\n'
'\n'
' if __name__=="__main__":\n'
'\t ss="acaacb"\n'
'\t weird(ss)\n'
空格问题可能导致奇怪的错误,其中代码实际上并不像您认为的那样缩进。您可以使用
运行程序来测试此理论python -tt your_program_name.py
然后切换到使用四个空格而不是标签。