Python 我试图发出一个命令,将所有参数相乘

Python 我试图发出一个命令,将所有参数相乘,python,discord,discord.py,Python,Discord,Discord.py,以下是我目前拥有的代码: @client.command() async def Q1(ctx, *args): Number = 1 for arg in args: Number = Number * float(arg) await ctx.send(Number) 但是每次你有两个以上的参数时,它都会增加20,我也希望它只打印最后一个答案,而不是每个参数 async def Q1(ctx, *args): Number = 1 for arg in ar

以下是我目前拥有的代码:

@client.command()
async def Q1(ctx, *args):
  Number = 1
  for arg in args:
    Number = Number * float(arg)
    await ctx.send(Number)
但是每次你有两个以上的参数时,它都会增加20,我也希望它只打印最后一个答案,而不是每个参数

async def Q1(ctx, *args):
  Number = 1
  for arg in args:
    Number = Number * float(arg)
    await ctx.send(Number)
我不认为你需要等待的循环。把它从循环中去掉,你就应该知道答案了

@client.command()
async def Q1(ctx, *args):
  Number = 1
  for arg in args:
    Number = Number * float(arg)
  await ctx.send(Number)

for
循环的每次迭代中,您都在等待
ctx.send(Number)

@client.command()
异步def Q1(ctx,*参数):
数字=1
对于args中的arg:
数字=数字*浮点数(arg)
等待ctx.发送(号码)#此线路在环路内
#因此在每次迭代中都会运行
相反,将
wait ctx.send(Number)
移动到循环外部,它将只打印最终的
Number

@client.command()
异步def Q1(ctx,*参数):
数字=1
对于args中的arg:
数字=数字*浮点数(arg)
等待ctx发送(编号)
如果我们用

def Q1(参数):
数字=1
对于args中的arg:
数字=数字*浮点数(arg)
#等待ctx发送(编号)
打印(数字)
Q1([2,3,4,5,6])
它返回
720.0
。我假设“每次您有两个以上的参数时,都会添加20个”,您指的是
720
之后的
.0
。这是因为
Number
变量是浮点值。您可以通过格式化
Number
来删除此项

@client.command()
async def Q1(ctx, *args):
  Number = 1
  for arg in args:
    Number = Number * float(arg)
  await ctx.send('{:.0f}'.format(Number))

这将
数字
四舍五入到小数点后零位,给出整数值的外观,并使用上一示例中的数字返回
720

请使用一些示例输入和预期输出更新您的问题。如果您只想在最后完成
wait
,请将其从循环中取出。打印
args
以查看所有参数,这应该有助于解释为什么会得到零。