





Еще проще:
if 'dog' in y:
...
Это не дает ожидаемого результата.
Поскольку я вижу, что за ваш комментарий проголосовали, я ссылаюсь на тот же комментарий к другому ответу: вы не знаете, является ли это ожидаемым результатом, поскольку «1» может быть только флагом для проверки, является ли содержащий код или не работает. Это делает, о чем спрашивает OP: «Узнайте, есть ли слово« собака »в строке».
Вы можете использовать оператор членства in в Python.
'dog' in 'dogaway'
возвращается True
Это не дает ожидаемого результата.
Он хочет узнать, есть ли в строке слово «собака». Я не думаю, что 1 так уж важно.
Если вы хотите 0 или 1, просто сделайте int('dog' in 'dogaway')
@JonathanDyke - Из предоставленной информации невозможно понять, почему это ожидаемый результат и что они собираются с ним делать.
@Sayse, тогда откуда ты знаешь, что это не ожидаемый результат?
«Я ожидал, что вывод будет 1» довольно явно
Это не значит, что он хочет что-то делать с этой «1», возможно, он просто новичок в Python и пытается выполнять основные операции. Первое предложение также довольно явное («Узнайте, есть ли слово «собака» в строке».).
Вопрос: Как найти букву в строке в Python. Разве предоставленный ответ не приносит решения?
Вы можете использовать count.
y = 'dogaway'
print(y.count('dog')) # Outputs 1
или если вы хотите исправить свой код, вы ошибаетесь на единицу в своем соединении:
y = 'dogaway'
x = 0
for i in range(len(y) - 3): # Make sure your range accounts for the look ahead
# In the future add a print to make sure it is doing what you expect:
# print(y[i:i + 2])
if y[i:i + 3] == 'dog': # Here you were off by 1
x = x + 1
print(x)
Спасибо! ваше исправление действительно помогло мне. Теперь я напоминаю, что при нарезке y[x:y] он идет от включения x до y (но не включая его).
@DilshanSandhu Если он ответил на ваш вопрос, не забудьте отметить его как ответ. Это помогает :)
my_str.find('dog')вернет индекс, если он находится вstr.