#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
, чтобы повторить все строки в ней.