Как выбрать целое число в строке, если позиция может измениться? - PullRequest
0 голосов
/ 16 декабря 2018

Сейчас я занимаюсь созданием бота Discord для своего собственного сервера.Я пытаюсь дать ему функцию случайного числа, поэтому в чате разногласий вы можете набрать

! Rng 0 6

И тогда бот вернет случайное числочисло от 0 до 6.

Это работает с этим кодом

@client.event
async def on_message(message):
    if message.content.startswith('!rng'):
        highest = int(message.content[-1])
        lowest = int(message.content[-3])
        random = str(randint(lowest, highest))
        await message.channel.send("I choose " + random)

Однако, как только выбранные числа больше 9 (более 1 цифры), он начинает отказывать, потому что мойИндексирование предназначено только для работы с 1-значными числами.Есть ли способ, как я мог бы заставить его работать с большими числами?Таким образом, вы можете сказать случайное число между 172 и 18361, или что-то еще.Какой-то способ позволить ему выбрать целое число.

У меня была идея сделать несколько для циклов, чтобы проверить, является ли следующая строковая буква числом, и добавить это к числу, чтобы я получил целое число.в конце, но я держу пари, что есть лучший способ с меньшим количеством кода и хлопот.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

вы можете использовать регулярные выражения:

import re
text = '!rng 0 6'
results = re.findall('\d+', text)
print(results)

напечатает ['0', '6'] вы можете объединить его с map(int,results), чтобы получить (генератор) целых чисел

0 голосов
/ 16 декабря 2018

Используйте split для разделения чисел:

lowest, highest = map(int, message.split()[1:])
...