我正在为一个twitch机器人做一个python脚本,它基本上是一个吃角子老虎机。免责声明-我对python完全陌生,所以请不要杀我。你知道吗
在脚本开始时,我有以下代码来检查是否键入了正确的命令,检查第一个参数是否是整数,以及检查用户是否有足够的点。这个想法是让他们选择一个数额赌博,所以成本线将改变,一旦我得到它的工作。你知道吗
if data.IsChatMessage():
if (data.GetParam(0).lower() == settings["command"]
and isinstance((int(data.GetParam(1).lower())), int)
and settings["costs"] <= Parent.GetPoints(data.User)):
来自聊天室的输入总是以字符串形式出现,即使它只是一个数字。我可以用int()将其转换为int,但是如果没有任何东西或者除了数字之外还有其他东西,那么脚本就会完全崩溃。如何防止脚本崩溃并提醒用户需要输入整数?谢谢!你知道吗
如果
data.GetParam(1)
不是整数,则行isinstance((int(data.GetParam(1).lower())), int)
将引发ValueError异常。你知道吗正如user8153所建议的,用try包装转换,除了block:
{或者,您可以使用
在做了一些研究之后,我认为可以使用try/except块来确保用户给出的值实际上是一个数字。你知道吗
我在这里得到了答案: Converting String to Int using try/except in Python
你写道:
这个片段有两个问题:
int(..)
构造函数,如果提供非整数(如"foobar18"
),则可能会失败(错误);并且int
,因此检查是无用的。你知道吗所以现在的问题是怎么做。我们可以构造一个高级检查来检查字符串是否确实是整数,但问题是我们必须覆盖多个情况,而且很容易忘记一个。你知道吗
Python语言的思想是:EAFP:E比ask更适合F而不是p终止。这意味着Python的哲学是鼓励尝试某些东西,在特殊情况下,处理它,而不是首先检查某个东西是否是整数。你知道吗
所以文可以这样写:
您最好总是指定您希望看到的错误(
ValueError
),因为例如,如果data.GetParam(1)
引发另一个错误,您本身并不希望在那里处理它:这并不意味着data.GetParam(1).lower()
不是整数,而是意味着data.GetParam(1)
产生了一些(其他)错误。你知道吗相关问题 更多 >
编程相关推荐