объясните пожалуйста элемент в коде(зачем в функции 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, если что).