我如何解释Python中的负值?

use*_*537 1 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()
Run Code Online (Sandbox Code Playgroud)

我试图看看它是否以负号开头,其余的是一个数字那么好......我不知道因为我不想使用多个return语句.

iCo*_*dez 5

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

def rotationKeyValidated(rotationKeyStr):
    try:
        int(rotationKeyStr)
    except ValueError:
        return False
    return True
Run Code Online (Sandbox Code Playgroud)

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


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

def rotationKeyValidated(rotationKeyStr):
    try:
        int(rotationKeyStr)
    except ValueError:
        flag = False
    else:
        flag = True
   return flag
Run Code Online (Sandbox Code Playgroud)

else:如果块将只执行try:块执行而不产生错误.


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

def rotationKeyValidated(rotationKeyStr):
    if rotationKeyStr.startswith('-'):
        rotationKeyStr = rotationKeyStr[1:]
    return rotationKeyStr.isdigit()
Run Code Online (Sandbox Code Playgroud)

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