三种解决方案,来回答你的需求:
我试图用一个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