@Tomorrow772

Ограничение ввода данных в переменную?

Здравствуйте я хочу сделать Команду /рандом
Чтобы бот когда вводят число больше 1000 или буквы бот писал чтобы он написал число меньше 1000 или он ввёл буквы

@dp.message_handler(commands=['random'])
async def process_start_command(message: types.Message):
    number1 = int(message.text.split()[1])
    random_number = random.randint(0, number1)
    if not 1 <= number1 <= 1000:
    	await message.answer(f'введите число меньше 1000')


Как это сделать?
Использую библиотеку aiogram

Буду рад если поможете
  • Вопрос задан
  • 140 просмотров
Решения вопроса 2
@o5a
Проверку нужно до перевода в число делать, плюс добавить проверку на само число (или отсутствие букв, по желанию)
async def process_start_command(message: types.Message):
    number1 = message.text.split()[1]
    if not (number1.isdigit() and 1 <= int(number1) <= 1000):
    	await message.answer(f'введите число меньше 1000')
    else:
        random_number = random.randint(0, int(number1))

И кстати random.randint(0, x) выдаст число из x+1 набора чисел, а не x.
Ответ написан
Vindicar
@Vindicar
RTFM!
number1 = message.text.split()[1] #вытащили нужный кусок строки
try:
  number_value = int(number1) #int() выбросит исключение ValueError, если строка не является записью числа
  if  not (0 < number_value <= 1000):
    raise ValueError() #мы сами выкинем ValueError, если число недопустимое
except ValueError: 
  await message.answer('введите число от 1 до 1000') #ругаем пользователя
  return #завершаем обработку команды
#если управление дошло досюда, число number_value допустимое.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы