三种解决方案,满足您的需求:
我尝试使用 for 循环,但令人尴尬的是它不起作用。有没有办法可以通过字符串来获取某些模式以添加到计数变量中?如果我学会了如何做这个,我相信我可以找到这个练习的其他模式。
.
解决方案 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
.
所以,想想迭代器和生成器