我如何解释Python中的负值?

时间:2014-11-20 22:12:29

标签: python validation int startswith

我试图查看一个字符串(它必须是一个字符串)是否为数字。

到目前为止,我使用的是isdigit(),但显然isdigit没有考虑到负数。

如果我isdigit(a)a = -1,我会得到错误。

如果我isdigit(a)a = 1,我会成真。

到目前为止,我有,

def rotationKeyValidated(rotationKeyStr):
    if rotationKeyStr.startswith('-') and rotationKeyStr[1:].isdigit():
        int(rotationKeyStr)
    return rotationKeyStr.isdigit()

我试图看看它是否以负号开头,剩下的就是数字了......我不知道因为我不想使用多个返回语句。

1 个答案:

答案 0 :(得分:5)

您可以使用try/except block并尝试将字符串转换为整数:

def rotationKeyValidated(rotationKeyStr):
    try:
        int(rotationKeyStr)
    except ValueError:
        return False
    return True

这种编码风格包含Python的EAFP principle,并且是大多数Python程序员的首选。它也非常强大,处理任何可以转换为int的字符串。


由于您的作业只需要一个return语句,因此您可以添加else:块和一个标志:

def rotationKeyValidated(rotationKeyStr):
    try:
        int(rotationKeyStr)
    except ValueError:
        flag = False
    else:
        flag = True
   return flag

else:块仅在执行try:块时执行,而不会引发错误。


好吧,既然你必须使用str.isdigit,你总是可以这样做:

def rotationKeyValidated(rotationKeyStr):
    if rotationKeyStr.startswith('-'):
        rotationKeyStr = rotationKeyStr[1:]
    return rotationKeyStr.isdigit()

if语句检查字符串是否以-开头,如果是,则删除该字符。之后,我们可以安全地返回str.isdigit

的结果