Как сделать генератор рандомных чисел в телеграм боте?
Пишу телеграм бота, у которого одна из функций - генерирование рандомных чисел, после ввода пользователем количества этих самых чисел, числа с которого начинается диапазон генерации, и числа, на котором этот диапазон кончается. А проблема в том, что я не могу нормально сохранить вводимые пользователем числа в переменные, и засунуть их потом в цикл.
Ответы (1 шт):
Автор решения: Alioshca Z
→ Ссылка
Напрашивается что-то типо того (при условии, что числа вводятся через пробел или другой нечисловой разделитель):
import random
import re
@bot.message_handler(content_types=['text'])
def randomizer(message):
r = re.findall(r'\d+', message.text)
if len(r) < 2:
print('Придумайте, что делать, если введено меньше 2 чисел')
return
if len(r) > 2: #обрезание до 2-х, если чисел введено больше 2
r = r[:2]
r_min = min([int(i) for i in r]) #если вдруг числа введены в порядке убывания
r_max = max([int(i) for i in r])
bot.send_message(message.chat.id, 'Ваше случайное число: {}'.format(random.randint(r_min, r_max)))
Если нужно ввести первым числом количество случайных чисел, а затем 2 числа, образующих интервал, то так:
@bot.message_handler(content_types=['text'])
def randomizer(message):
r = re.findall(r'\d+', message.text)
if len(r) < 1:
print('Придумайте, что делать, если не введено чисел')
return
elif len(r) == 1: #если введено 1 число, то просто что-нибудь рандомим
bot.send_message(message.chat.id, 'Ваше случайное число: {}'.format(random.randint(0, int(r[0])**2)))
else:
quantity = int(r[0])
r = r[1:3]
r_min = min([int(i) for i in r]) #если вдруг числа введены в порядке убывания
r_max = max([int(i) for i in r])
rand_string = [str(random.randint(r_min, r_max)) for i in range(quantity)]
bot.send_message(message.chat.id, 'Ваши случайные числа: {}'.format(' '.join()))