三種解決方案,來回答你的需求:
我試圖用一個for循環,但它令人尷尬的不工作。 有沒有辦法通過一個字符串來挑選某些模式來 添加到count變量中?如果我學會了如何做到這一點,我是 確定我可以找到這種做法的其他模式。
。
溶液1
line = "Bxooxxx xoox xxoxoxxxoxoxxxox#xoooxxoox"
print line,'\n'
def explore(X):
it = iter(X)
prec = it.next()
print 'prec ch1 next next'
for ch in it:
print ' %r %r' % (prec,ch),
if (prec,ch)==('x','o'):
prec = it.next()
print ' %r' % prec,
if prec=='o':
prec = it.next()
if prec =='x':
print ' %r OK !!' % prec
yield 1
else:
print ' %r not good' % prec
else:
print ' stop'
else:
print
prec = ch
print sum(explore(line))
結果
Bxooxxx xoox xxoxoxxxoxoxxxox#xoooxxoox
prec ch1 next next
'B' 'x'
'x' 'o' 'o' 'x' OK !!
'x' 'x'
'x' 'x'
'x' ' '
' ' 'x'
'x' 'o' 'o' 'x' OK !!
'x' ' '
' ' ' '
' ' 'x'
'x' 'x'
'x' 'o' 'x' stop
'x' 'o' 'x' stop
'x' 'x'
'x' 'x'
'x' 'o' 'x' stop
'x' 'o' 'x' stop
'x' 'x'
'x' 'x'
'x' 'o' 'x' stop
'x' '#'
'#' 'x'
'x' 'o' 'o' 'o' not good
'o' 'x'
'x' 'x'
'x' 'o' 'o' 'x' OK !!
3
溶液2
line = "Bxooxxx xoox xxoxoxxxoxoxxxox#xoooxxoox"
print line,'\n'
def expl(X):
it4 = iter(X)
it4.next();it4.next();it4.next()
it3 = iter(X)
it3.next();it3.next()
it2 = iter(X)
it2.next()
it1 = iter(X)
for a in it4:
if (it1.next(),it2.next(),it3.next(),a)==('x','o','o','x'):
yield 1
print sum(expl(line))
結果
Bxooxxx xoox xxoxoxxxoxoxxxox#xoooxxoox
3
溶液3
line = "Bxooxxx xoox xxoxoxxxoxoxxxox#xoooxxoox"
print line,'\n'
import re
reg = re.compile('(?<=x)oox')
print len(reg.findall(line))
結果
Bxooxxx xoox xxoxoxxxoxoxxxox#xoooxxoox
3
。
所以,想想迭代器和發電機
讓我們看看你到目前爲止。不起作用的代碼毫無尷尬 - 相反,它是我們看到你不明白的東西的機會,並幫助你真正弄清楚你的程序正在發生什麼。另外,你應該提到預期的輸出是什麼。 – mgilson 2013-02-28 05:33:04
@mgilson gotcha :) – user2006236 2013-02-28 05:45:30