Нужны шаги для базового вопроса цикла Python

#python #loops

#питон #петли #python #циклы

Вопрос:

Я полный новичок в программировании, так что извините за невежество. Я беру MOOC и ни за что на свете не могу понять, какие шаги предпринять, чтобы решить эту проблему:

Предположим, что s — это строка символов нижнего регистра.

Напишите программу, которая выводит количество раз, когда строка ‘bob’ встречается в s. Например, если s = ‘azcbobobegghakl’, то ваша программа должна напечатать

Количество раз, когда происходит боб, равно: 2

ОК. Я знаю, что цикл for необходим. Я думаю, что это должно начаться с:

 x=bob
count=0
for count in range(s):
>if 
  

Здесь я не уверен, как извлечь конкретное слово ‘bob’ из индекса, и я знаю, что мне нужно ввести count = 1, но не уверен, где. Не мог бы кто-нибудь, пожалуйста, помочь мне? Я уверен, что мог бы решить это сам, но через несколько часов я расстраиваюсь!

Комментарии:

1. Вы ll need используете range(len (s))` вместо range(s) , поскольку s это не целое число. Затем используйте x == s[count : count len(x)] .

2. Ага! Я подумал, что мне, возможно, придется преобразовать str в int. Спасибо, босс.

3. Нужно ли мне после этого вставлять мои операторы if? Я все еще не уверен, как начать эти следующие инструкции if.

4. Вам не нужно вкладывать какие-либо операторы if. Подумайте об этом так. Когда вы смотрите на строку s , откуда вы знаете, что слово в x началось? Теперь, когда вы знаете, что это началось, как вы узнаете, что это закончилось?

5. Я серьезно зашел в тупик. Нужно ли мне переопределять x сейчас? Я не уверен, как изолировать значение отдельной буквы. Нужно ли мне вообще использовать оператор if? Вот что у меня есть сейчас: for x in range(len(s)): >x==s[count:count lensx)]

Ответ №1:

 # our input variables:
term = 'bob'
s = 'azcbobobegghakl'

# where I store count of found search term:
count = 0

# we are going from 0 to length of input string:
for i in range(len(s)):

    # compare the slice from <current index> to <current index   length of search term> to search term
    if s[i:i len(term)] == term:
        # it there's match, increase the count
        count  = 1

print(count)
  

С принтами:

 2
  

Ответ №2:

Итак, вот мое решение:

 s = 'azcbobobegghakl' 
x = 'bob'
count = 0
for i in range(len(s)):
    if x == s[i : i   len(x)]:
        count = 1
print(count)
  

Несколько вещей, на которые следует обратить внимание. Прежде всего, в вашем for заявлении было несколько ошибок, когда вы используете переменную count перед инструкцией, но также создаете новую переменную count в инструкции for , и поэтому я заменил ее в инструкции именем переменной i , чтобы она не переопределяла вашу первую count переменную. Во-вторых, это должно быть range(len(s)) как s строка, и вы захотите выполнить итерацию до ее длины.

Наконец, чтобы объяснить if x == s[i : i len(x)]: часть, нужно посмотреть, совпадает ли X с i-й позицией в S вместе со следующими 2 буквами в S, потому что длина X (‘bob’) равна 3, поэтому вам нужно будет просматривать каждую len(x) или три буквы в s строке.

Ответ №3:

Я сделал что-то вроде этого, я почти уверен, что кто-то может оптимизировать код, я просто попробовал быстрый. Пока это работает.

 keyword = "bob"
text = "azcbobobegghakl"
n = len(keyword)
temp = ""
counter = 0
for x in (text):
    temp  = x
    if len(temp)%(n 1) == 0:
        temp = temp[1::]
        if keyword in temp:
            counter  = 1
print(counter)
  

Комментарии:

1. Спасибо. Кажется, это работает, но в нескольких случаях почему-то не хватает только одного «боба», например: ожидалось, что ‘bobobobobobobobobobobobobobobobobobob’ 10. Я буду использовать ваш ответ, поскольку я ни за что на свете не мог понять, как решить эту проблему. Какие-либо советы или ресурсы для практики и получения дополнительной информации об этом? Большинство руководств не предоставляют больше информации, чем лекция.

2. пойдите для этого, я не понял, что да, это правда, в нем отсутствует первый боб. Я думаю HackerRank.com это отличное место для практики программирования. Я пользуюсь им время от времени.

Ответ №4:

Просто предложение для завершения уже данных ответов.

Вероятно, вы могли бы начать с проверки, существует ли строка, которую вы ищете, 'bob' в строке для поиска, s например:

 s = 'azcbobobegghakl'
if 'bob' in s:
    # your searching algotithm
  

Ответ №5:

Это также может сработать

 s = 'azcbobobegghakl' 
x = 'bob'
count = 0
for i in range(len(s)):
    if s[i:].startswith(x):
            count  = 1