这是我目前拥有的代码:
@client.command()
async def Q1(ctx, *args):
Number = 1
for arg in args:
Number = Number * float(arg)
await ctx.send(Number)
但是每次您将两个以上的参数相乘时它都会添加 2 个 0,我也希望它只打印最后一个答案而不是每个参数。
答案 0 :(得分:2)
async def Q1(ctx, *args):
Number = 1
for arg in args:
Number = Number * float(arg)
await ctx.send(Number)
我认为您不需要在 for 循环中使用 await。把它从循环中去掉,你应该有答案。
@client.command()
async def Q1(ctx, *args):
Number = 1
for arg in args:
Number = Number * float(arg)
await ctx.send(Number)
答案 1 :(得分:0)
您在 ctx.send(Number)
循环的每次迭代中都在等待 for
。
@client.command()
async def Q1(ctx, *args):
Number = 1
for arg in args:
Number = Number * float(arg)
await ctx.send(Number) # This line is inside of the loop
# hence running on every iteration
相反,将 await ctx.send(Number)
移到循环之外,它只会打印最终的 Number
值。
@client.command()
async def Q1(ctx, *args):
Number = 1
for arg in args:
Number = Number * float(arg)
await ctx.send(Number)
如果我们用
测试这个def Q1(args):
Number = 1
for arg in args:
Number = Number * float(arg)
#await ctx.send(Number)
print(Number)
Q1([ 2, 3, 4, 5, 6 ])
它返回720.0
。我假设通过“每次将 2 个以上的参数相乘时添加 2 个 0”,您指的是 .0
之后的 720
。这是因为 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))
这会将 Number
舍入到零个小数位,呈现整数值并使用上一个示例中的数字返回 720
。