现在,我正在为自己的服务器创建Discord机器人。我正在尝试为其提供随机数功能,因此在不和谐聊天中,您可以输入
!rng 0 6
然后Bot将返回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之间的随机数,或其他任何数字。用某种方法可以挑选出整个数字。
我的想法是做一些for循环,检查下一个字符串字母是否为数字,然后将其附加到数字上,以便最后得到整个数字,但是我敢打赌,有一些更好的方法可以减少代码和麻烦。
答案 0 :(得分:1)
使用split
分隔数字:
lowest, highest = map(int, message.split()[1:])
答案 1 :(得分:0)
您可以使用正则表达式:
import re
text = '!rng 0 6'
results = re.findall('\d+', text)
print(results)
将打印['0', '6']
,您可以将其与map(int,results)
组合以获得整数(生成器)