掷骰子命令出现问题

时间:2019-01-27 15:00:18

标签: python discord.py

我正在尝试创建命令'-dice',然后在命令中响应一个介于number1和number2之间的随机数。但是,如果他们没有输入数字1和数字2,那么它只会在1和6之间进行。

我尝试了一些代码,它说“ number1 and number2”是什么,什么也没放。当我输入数字时,它说“ nil”未定义。

import random
@client.command()
async def dice(number1, number2):
    if number1 == nil and number2 == nil:
        number = random.randint(1,6)
        print(f"The dice rolled a {number}!")

else:
    number = random.randint(number1, number2)
    print(f"The dice rolled a {number}!")

输入:-dice 输出:骰子掷出

输入:-dice [number1] [number2] 输出:骰子掷出[number1和number2之间的数字]

2 个答案:

答案 0 :(得分:0)

通过nil,我假设您是说None?如果是这样,我看到您正在尝试检查是否将参数number1number2传递给了函数。

幸运的是,您无需实现任何逻辑,只需更改函数定义即可:

import random
@client.command() #-> not sure what this is meant to achieve
async def dice(number1=1, number2=6): #-> not sure why you have async here?
    number = random.randint(number1, number2)
    print(f"The dice rolled a {number}!")

在定义中设置number1=1number2=6基本上意味着:'我们的dice函数有两个(可选)参数。如果在调用函数时未传递这些参数的值,则默认将它们分别设置为1和6。但是,如果提供了这些参数的值,请忽略默认值,并将传递给函数调用的值用作相应的值。

答案 1 :(得分:0)

要获得所需的默认值行为(例如1或6),您必须在函数定义中指定该值,这样您就可以得到以下内容:

php artisan tinker

这样,当不提供默认值时,将使用默认值(在'='之后)。在您的初始代码中,您需要一个import random @client.command() async def dice(number1=1, number2=6): number = random.randint(number1,number2) print(f"The dice rolled a {number}!") number1参数,因此当没有(或只有一个)给出时,它会崩溃。