0

如何在第一次迭代完成之前转到 for 循环中的下一个字母?

s = 'mmmmbobob'
for letter in s:
    if letter is 'b':   
        s = s + 1 <<<<<<<<<RIGHT HERE<<<<<<<<<
            if letter is 'o':
                s = s + 1 <<<<<<<<<THEN HERE<<<<<<<<< 
                    if letter is "b":
                        counter_bob += 1
                    else:
                        break
                else:
                    break
            else:
                continue      
print('Number of times bob occurs is: %d' % (bob_name_counter))
4

1 回答 1

0

目前,您正在尝试添加1到字符串s中,这将抛出一个TypeError. 即使s int以这种方式递增它也不会移动到 Python(或我知道的任何语言)中循环的下一次迭代。

您可以使用关键字continue立即移动到循环的下一次迭代。此处的文档:https ://docs.python.org/3/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops

但是,我不认为这正是您想要在这里做的,因为看起来您正在尝试计算子字符串'bob'在主字符串中的出现次数s

相反,您应该遍历字符的索引,s并在每个点检查当前字符和接下来的两个字符是否一起形成 substring 'bob'。如果是这样增加counter_bob

考虑到这一点,您的代码重构示例:

s = 'mmmmbobob'
counter_bob = 0

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

print('Number of times bob occurs is: %d' % (counter_bob))

哪个打印:

Number of times bob occurs is: 2
于 2018-09-27T00:59:22.267 回答