-1

我正在从 edX.org 获取 MIT 6.00.1x,我正在处理问题集 1 问题 2。我无法从这个变量中获取 bob

s = 'azcbobobegghakl'

我有这个代码

s = 'azcbobobegghakl'
bobTimes = 0

for bobWord in s:
  if 'b' and 'o' and 'b' in bobWord:
    bobTimes += 1

print(bobTimes)

该代码适用于此变量,但是当您添加另一个 b 和 o 时,如下所示:

s = 'azcbobobegghaklbobddbtto'

它将bobTimes变量加一。我不知道如何从这个变量中提取单词“bob”。

4

2 回答 2

0

你能澄清提取要求吗?具体来说:

bobob两个鲍勃,还是只有一个?是bobobob三?或者它们必须都是分开的,即bobasdfbobwwwwbob

s.count("bob")将计算有多少个“bob”实例出现在不重叠的字母中。ie bobis 1, bobbobis 2, bobobis only one 因为中间的 b 只计入第一个,只剩下ob,但是bobobob2 更好读为bob o bob

您可以一次遍历一个字符,并检查该字符和接下来的 3 个是否等于“bob”

for k,v in enumerate(s):
   if s[k:k+3]=="bob": bobcount+=1

这种方法算bobob二,算bobobob三。或者您可以使用正则表达式,但这不是我的强项,我将把它留给其他人稍后解释/更新相关信息。

于 2017-01-11T15:43:45.047 回答
0

只需使用 python 的列表切片获取字符串的下 3 个字符。

s = 'azcbobobegghakl' #prints 2
s = 'azcbobobegghaklbobddbtto' #prints 3
bobTimes = 0

for i in range(len(s)):
  if s[i:i+3] == 'bob':
    bobTimes += 1

print(bobTimes)
于 2017-01-11T15:42:01.013 回答