Просматриваем строку и смотрим, содержит ли она второй параметр

#python #loops #split #boolean

#python #циклы #разделить #логическое

Вопрос:

Привет, мой вопрос в том, что я хочу функцию, у которой было бы два параметра, один из которых был бы твитом, а другой — хэштегом, и она возвращала бы True тогда и только тогда, когда хэштег присутствует в твите, и false в противном случае.

Примеры:

contains_hashtags('I like bats #batman', 'batman') результат равен True

contains_hashtags('I like bats #batman', 'bat') выдает значение False, потому что это не то же самое, что #batman .

Пока у меня есть

 def contains_hashtags(tweet, hashtag):
tweet.split(" ")
for char in tweet:
    if tweet.startswith(hashtag):
        return True
    else:
        return False
  

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

Ответ №1:

split возвращает массив строк. Строки неизменяемы, это означает, что вам нужно переназначить обработанное значение (массив), оно не обновляется автоматически и заменяет переменную.

Проверьте наличие каждого слова в разделенном массиве, начинается ли оно с # и содержит ли оно hashtag .

Также обратите внимание, что return False этот параметр появляется только в том случае, если хэштег не был найден, поэтому вы можете поместить его только после того, как все случаи были протестированы и доказали свою ошибочность:

 def contains_hashtags(tweet, hashtag):
    tweet = tweet.split() # ' ' by default
    for word in tweet:
        if word.startswith('#') and hashtag in word:
            return True
    return False
  

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

1. После того, как я попробовал это, он говорит, что объект ‘list’ не имеет атрибута ‘startswith’, поэтому даже после изменения моего tweet = tweet.split () я получил эту ошибку, означает ли это, что мне нужно изменить мой атрибут tweet.startswith на list (tweet.startswith)?

2. @naruto321 проверь это сейчас

3. Хорошо, большое спасибо, просто интересно, поэтому всякий раз, когда я использую startwith (), оператор if должен быть for **** в tweet?

4. Потому что я узнал, что обычно это похоже на word в string, если string = 0 возвращает False

5. tweet представляет собой массив строк . вам нужно проверить for word in tweet , чтобы повторить все строки в ней.