Python: переходя к следующей букве For Loop - PullRequest
0 голосов
/ 23 сентября 2018

Как перейти к следующей букве в цикле for до окончания 1-й итерации?

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))

1 Ответ

0 голосов
/ 27 сентября 2018

В настоящее время вы пытаетесь добавить 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 и в каждой точке проверять, составляют ли текущий символ и следующие два вместе подстроку '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
...