перебираем входные данные и видим, что в них происходит

#python #loops #count

#питон #петли #подсчитывать #python #циклы #количество

Вопрос:

Я пытаюсь подсчитать, сколько раз пользователь вводил URL http: // в начале своего ответа или перед пробелом или в конце твита Проблема в том, что независимо от того, что я ввожу в твит, он всегда остается равным 0, и даже если он рассылает спам http: //, он все равно остается равным 0

 def count_url(tweet):
count = 0
for word in tweet:
    if word.startswith('http://') or word.endswith('http://'):
        count = count   1
return count
  

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

1. В чем, по-видимому, проблема?

2. он всегда остается равным 0 независимо от того, что я ввожу, даже если это спам http://

3. Отредактируйте свой вопрос. Пожалуйста, предоставьте примеры входных данных, которые вы предоставляете, и объясните в своем вопросе, что именно не работает. Теперь вы просите читателя угадать, в чем проблема. Что совсем не помогает.

4. У меня такое чувство, tweet что это одна струна.

5. да, это просто count_url («http:// У меня есть ссылка http:// под названием http://»)

Ответ №1:

Вы вводите твиты в свою функцию, которые являются строками. Итак, если у вас есть твит, подобный:

 "I love potatoes, buy some here http://potatoesarethebest.com"
  

И повторяя это, вы повторяете символы, а не слова. Что вам нужно сделать, так это разбить строку на список, вызвав для нее split метод, который по умолчанию будет разбит на пробелы:

 >>> s = "I love potatoes, buy some here http://potatoesarethebest.com"
>>> s.split()
['I', 'love', 'potatoes,', 'buy', 'some', 'here', 'http://potatoesarethebest.com']
  

Это означает, что в вашей функции все, что вам нужно сделать при повторении вашей tweet , это просто вызвать split() . Кроме того, вы можете просто использовать count = 1 вместо count = count 1

С этим методом также не имеет смысла иметь word.endswith('http://') . endswith ищет части строки, которые заканчиваются совпадением. Итак, вы ищете что-то вроде «thisishttp://». Что не имеет особого смысла.

 def count_url(tweet):
    count = 0
    for word in tweet.split():
        if word.startswith('http://'):
            count  = 1
    return count
  

ДЕМОНСТРАЦИЯ:

 >>> res = count_url("I love potatoes, buy some here http://potatoesarethebest.com")
>>> print(res)
1
  

Ограничение этого решения заключается в том, что оно не будет работать, если у вас есть строка типа:

 "this is awesome check here:http://www.stuff.com"
  

Существуют и другие ограничения, о которых вы должны знать. Итак, вам также необходимо знать, какие именно критерии вы хотите использовать для выполнения сопоставления.