gpt4 book ai didi

python - 用户输入给出 “ValueError: invalid literal for int() with base 10:”

转载 作者:行者123 更新时间:2023-12-03 08:38:53 24 4
gpt4 key购买 nike

我一直在尝试编写一个discord bot,以检查带有参数的使用输入和命令,但是我想检查它是字符串还是数字。让我清楚地解释一下:
在我的代码中:

@client.command()
async def create(ctx, *args): # create a lobby
firstarg = (int)(args[0])
if (firstarg >= 4 and firstarg <= 10):
await ctx.send("Max players : " + args[0])
return (0)
else:
await ctx.send("Error. Please enter a maximum number of players between 4 and 10.")
return (84)
参数始终是字符串,因此我认为我可以将它们强制转换为整数,并且可以正常工作。
但是,有一个陷阱。
当我在命令中使用数字以外的任何内容时,不会显示任何错误消息,因为它无法将其转换为整数。
因此,我想知道是否有一种方法可以检查此特定错误,以及将来是否会遇到其他类型的错误。
我不确定如何“检查它是否为字符串,以及是否未将其转换为int并在其余代码中使用它”。
它可能不是100%清晰,因此,如果有一些不清楚的地方,请告诉我,我会尽力澄清。
谢谢。

最佳答案

我认为您需要研究Python和how to handle them中异常的工作方式
在您的情况下,您需要捕获ValueError,这将给出类似的信息:

@client.command()
async def create(ctx, *args): # create a lobby
try:
firstarg = (int)(args[0])
except ValueError:
# the string was not a number
await ctx.send("Error. Please enter a number.")
return (84)
else:
# the string was a number
if (firstarg >= 4 and firstarg <= 10):
await ctx.send("Max players : " + args[0])
return (0)
else:
await ctx.send("Error. Please enter a maximum number of players between 4 and 10.")
return (84)

关于python - 用户输入给出 “ValueError: invalid literal for int() with base 10:”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64029473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com