объясните пожалуйста элемент в коде(зачем в функции getanekdot z = "")

    import telebot, bs4, requests
    bot = telebot.TeleBot("token")

    def getanekdot():
    z=''# зачем это нужно?
    s=requests.get('http://anekdotme.ru/random')
    b=bs4.BeautifulSoup(s.text, "html.parser")
    p=b.select('.anekdot_text')
    for x in p:        
        s=(x.getText().strip())
        z=z+s+'\n\n'# 
        return s

    @bot.message_handler(content_types=["text"])
    def handle_text(message):
           msg=message.text
           msg=msg.lower()
    if (u'анекдот' in msg):
          try:
              bot.send_message(message.from_user.id, getanekdot())
           except:
               pass
     else:
    bot.send_message(message.from_user.id, u'Напишите мне слово Анекдот')

         bot.polling(none_stop=True, timeout=123)

     @bot.message_handler(commands=['start', 'help'])
      def handle_start_help(message):
       bot.send_message(message.from_user.id, u'Напишите мне слово Анекдот')

      bot.polling(none_stop=True, interval=0)

Ответы (1 шт):

Автор решения: 4500zenja

Подозреваю, что код функции getanekdot некорректен, ибо он выведет лишь одну строку-анекдот и всё. Если, например, прописать код так:

def getanekdot():
    z='' # результирующая строка
    s=requests.get('http://anekdotme.ru/random')
    b=bs4.BeautifulSoup(s.text, "html.parser")
    p=b.select('.anekdot_text')
    for x in p:        
        s=(x.getText().strip())
        z=z+s+'\n\n' # добавляем очередной анекдот в результирующую строку
    return z # возвращаем z вне цикла for

то мы видим, что z — это своего рода строка, состоящая из всех полученных текстов анекдотов (каждый текст разделяется двумя \n, если что).

→ Ссылка