Как найти букву в строке в Python

Узнать, есть ли слово «собака» в строке.

Я попытался сделать этот код, и я не знаю, где ошибка.

y='dogaway'
for i in range(len(y)):
    if y[i:i+2]=='dog':
        x=x+1
print(x)

Я ожидал, что вывод будет 1, но фактический вывод равен 0.

my_str.find('dog') вернет индекс, если он находится в str.
Error - Syntactical Remorse 21.06.2019 15:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
89
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Еще проще:

if 'dog' in y:
    ...

Это не дает ожидаемого результата.

Sayse 21.06.2019 15:02

Поскольку я вижу, что за ваш комментарий проголосовали, я ссылаюсь на тот же комментарий к другому ответу: вы не знаете, является ли это ожидаемым результатом, поскольку «1» может быть только флагом для проверки, является ли содержащий код или не работает. Это делает, о чем спрашивает OP: «Узнайте, есть ли слово« собака »в строке».

nKn 21.06.2019 15:48
Ответ принят как подходящий

Вы можете использовать оператор членства in в Python.

'dog' in 'dogaway'

возвращается True

Это не дает ожидаемого результата.

Sayse 21.06.2019 15:02

Он хочет узнать, есть ли в строке слово «собака». Я не думаю, что 1 так уж важно.

user11035198 21.06.2019 15:03

Если вы хотите 0 или 1, просто сделайте int('dog' in 'dogaway')

Felipe Sulser 21.06.2019 15:04

@JonathanDyke - Из предоставленной информации невозможно понять, почему это ожидаемый результат и что они собираются с ним делать.

Sayse 21.06.2019 15:07

@Sayse, тогда откуда ты знаешь, что это не ожидаемый результат?

nKn 21.06.2019 15:09

«Я ожидал, что вывод будет 1» довольно явно

Sayse 21.06.2019 15:10

Это не значит, что он хочет что-то делать с этой «1», возможно, он просто новичок в Python и пытается выполнять основные операции. Первое предложение также довольно явное («Узнайте, есть ли слово «собака» в строке».).

nKn 21.06.2019 15:12

Вопрос: Как найти букву в строке в Python. Разве предоставленный ответ не приносит решения?

Felipe Sulser 21.06.2019 15:13

Вы можете использовать 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 (но не включая его).

Dilshan Sandhu 21.06.2019 15:11

@DilshanSandhu Если он ответил на ваш вопрос, не забудьте отметить его как ответ. Это помогает :)

Error - Syntactical Remorse 21.06.2019 15:11

Другие вопросы по теме