telebot: вывести из списка названия, чтоб они отправились в одно сообщение
Код:
def check_codes(message):
projects = ['aa','bb','cc']
for i in range(len(projects)):
b = f"id: {i}, {projects[i]}"
bot.send_message(message.chat.id, f'{b}\n*Текст*')
Мне нужно чтобы после нумерации все значения которые лежат в списке projects выводились в одно сообщение, и переводилось на новую строку. Код сверху только запоминает последнее значение в переменной b и его выводит. Как мне нужно нумеровать все названия, чтоб еще и вывести в одно сообщение?
модуль - telebot, версия python 3.12
Ответы (1 шт):
Вместо
for i in range(len(projects)):
b = f"id: {i}, {projects[i]}"
bot.send_message(message.chat.id, f'{b}\n*Текст*')
используйте
b = ""
for i, project in enumerate(projects):
b += f"id: {i}, {project} "
bot.send_message(message.chat.id, f'{b}\n')
Объяснение:
Вместо вывода только последнего значения мы в цикле добавляем всякое значение в начально пустую строку
b, и таким образом созданную строку выводим на экран.Вместо некрасивого
for i in range(len(projects)): b = f"id: {i}, {projects[i]}"т.е. избыточного применения индекса
iдля выраженияprojects[i], я применил итерацию прямо по элементах спискаprojects.Но потому что вы все равно хотите вывести и индекс, я применил к списку
projectsстандартную функциюenumerate(), которая из каждого элемента создает пару (индекс, элемент).