这是Python的练习,我对Python中的变量范围设定感到困惑。Python中的“for i in range(XX)”的变量范围
“返回真,如果给定的字符串中包含的外观‘XYZ’,其中 的XYZ不是直接由一段preceeded(。),因此‘xxyz’计数 但‘x.xyz’没有。
xyz_there( 'abcxyz')→真
xyz_there( 'abc.xyz')→假 xyz_there( 'xyz.abc')→真”
这就是我的回答:
def xyz_there(str):
for i in range(len(str)-2):
if str[i]=='.':
i+=1
continue
elif str[i:i+3]=='xyz':
return True
return False
这是错误的。 xyz_there('abc.xyz') → False
将永远返回True
。因为变量i
将始终为0,1,2 ....并且i+=1
并不意味着什么。 为什么?
虽然有效,但这对于这个问题来说是矫枉过正的。它也没有真正回答这个问题,即“为什么我不能在'for'循环中修改'i'的值?”。 – 2012-08-10 05:59:23
哦......对不起,我并没有试图给出一个矫枉过正的答案。你已经解释了为什么我没有按照他的预期运作。试图表明可能有一个更清晰的方式来实现xyz_there。 – 2012-08-10 06:54:21
没问题。我没有投票,只是评论。我也猜测(尽管我不能保证)练习是在诸如codingbat.com之类的网站上进行的,无法为您的解决方案导入模块。都好。 :) – 2012-08-10 14:02:31