Как сравнить символы внутри строки - PullRequest
0 голосов
/ 01 октября 2019

Я новичок и у меня есть вопрос. Есть ли возможность сравнить символы внутри строк?

Я сделал функцию:

def animal_crackers(text):
    text1 = text.split()
    a = ''
    count = 0
    for a in text1:
        for char in enumerate(a):
            if char[0] == char[1]:
                return True
            else:
                return False

Результат:

>>> animal_crackers('Spam Spam')
>>> False

Логика в том, что я пытаюсьразбить строку, состоящую из двух слов. Затем я устанавливаю эти слова с 1-м циклом «for», а затем пытаюсь попасть внутрь строки с помощью 2-го и этого «char in enumerate (a)».

Он должен возвращать True, если оба слова начинаютсяс той же буквой.

Это в принципе не работает, поэтому мне интересно. Можете ли вы дать мне совет, а не готовый код? Или, может быть, вы можете сказать мне, где ошибка.

Ответы [ 4 ]

1 голос
/ 01 октября 2019

Вы также можете взглянуть на расстояние Левенштейна для струн. Это действительно простой, но и хороший урок для начинающих, и разумный метод сравнения типографики.

0 голосов
/ 01 октября 2019

Я могу видеть, где ошибка, и это в "перечислить (а)". Когда вы используете enumerate, он возвращает пару, подобную первой итерации, которую он даст (0, 'S'), то есть char[0] = 0 и char[1]='S', поэтому char[0] == char[1] равно False, и они представляют собой разные типы данных. Вместо этого попробуйте выполнить индексирование как список, поскольку text1.split() вернет список. Надеюсь, это поможет.

0 голосов
/ 01 октября 2019

Это, вероятно, то, что вам нужно:

def animal_crackers(text):
    text1 = text.split()
    for i in range(len(text1)-1):
        if text1[i][0] == text1[i+1][0]:
             print(True)
        else:
            print(False)
    return
0 голосов
/ 01 октября 2019

Хотя строки не совпадают со списками, их элементы могут быть доступны как списки.

salami = 'Salami'
spam = 'Spam'
cheese = 'Cheese'

salami[0] == spam[0] # True
salami[0] == cheese[0] # False
...