這是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